さくらのVPSを使ってシステム開発に必要な知識を学ぶ 〜第6回〜

はじめに

本連載は、システム開発に必要な知識を得るために、一通りの流れを学ぶことを目指しています。今回は一般的な業務におけるgit操作の流れを解説します。

前回までの記事で開発環境を整えた後、基本的に以下の流れで開発作業を進めます。

  1. git clone
  2. git branch
  3. git checkout
  4. git add
  5. git commit
  6. git push
  7. Pull Request の作成
  8. Pull Request のマージ

git clone

最初にプロダクトのリポジトリをローカルPCにcloneします。

上図のように Code > SSH を選択し、表示されるコマンドの右にあるボタンをクリックしてコピーします。

次にターミナルを起動し、git cloneコマンドを実行してリポジトリの内容をダウンロードします。するとローカルPCにリポジトリ名と同じ名前のディレクトリが作成されるので、そこに移動します。

# コマンド例
# git clone git@github.com:ユーザ名/リポジトリ名.git
$ git clone git@github.com:ic-lifewood/sample-repository.git

# ディレクトリ移動
$ cd sample-repository

git branch

作業をするにあたり、git branchコマンドで作業用のブランチを作成します。コマンドの書式や実行例を以下に示します。

# コマンド例
# git branch ブランチ名
# 入力された名前のブランチが作成されます
$ git branch test1

# コマンド例
# git branch
# branchの後に何も入力しない場合、ローカルPCに存在するブランチが表示されます。
$ git branch

* main
  test1

git checkout

続いて、git checkoutで作業用ブランチに切り替えます。

こちらもコマンドの書式や実行例を以下に示します。

# コマンド例
# git checkout ブランチ名
# 入力されたブランチに切り替わります。(*が付いているのが現在作業中のブランチです)
$ git checkout test1
  main
* test1

-b オプションを使って、git branchとgit checkoutを同時に実行することも可能です。以下に例を示します。

# コマンド例
# git checkout -b ブランチ名
# 入力された名前のブランチを作成すると同時にブランチが切り替わります。
$ git checkout test2
  main
  test1
* test2

git add

次の作業はリポジトリへのファイルの追加ですが、その前に、追加するファイルを編集します。下記の例ではviで編集していますが、他のエディタでも結構です。

# README.mdを編集
$ vi README.md

編集前のREADME.mdは下図のような内容になっています。

README.mdを下図のように編集します。

編集が終わったら、ファイルを保存しエディタを終了します。viの場合は以下の操作を行います。

  • ESCキー押下(コマンドモードに移行)
  • :wq 入力(保存とエディタ終了)

これでファイルの編集ができたので、作業で変更したファイルをgit addコマンドでリポジトリに追加します。

コマンドの書式や実行例を以下に示します。

# コマンド例
# git add ディレクトリ位置 or ファイル名
# 現在のディレクトリで、変更されたファイルをすべて追加します。
$ git add .

git commit

作業で変更したファイルをコミット(意訳:保存)します。

コマンドの書式や実行例を以下に示します。

# コマンド例
# git commit -m 'メッセージ'
# 'メッセージ'は、変更したファイルの変更内容を簡潔に入力します。
$ git commit -m 'README update'

[test2 0ee0dcc] README update

 1 file changed, 2 insertions(+)

git push

次に、作業で変更したファイルをローカルリポジトリからリモートリポジトリにプッシュ(アップロード)します。ここで使うのがgit pushコマンドです。

git pushコマンドでは、実行中にsshのパスワード入力が必要です。これを省略することもできますが、そのためには省略設定が別途必要です。

コマンドの書式や実行例を以下に示します。

# コマンド例
# git push origin ブランチ名
$ git push origin test2

Enter passphrase for key '/Users/lifewood/.ssh/id_rsa':
Enumerating objects: 29, done.
Counting objects: 100% (29/29), done.
Delta compression using up to 4 threads
Compressing objects: 100% (26/26), done.
Writing objects: 100% (29/29), 202.42 KiB | 987.00 KiB/s, done.
Total 29 (delta 4), reused 3 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (4/4), done.
remote:
remote: Create a pull request for 'test2' on GitHub by visiting:
remote:      https://github.com/ic-lifewood/sample-repository/pull/new/test2
remote:
To github.com:ic-lifewood/sample-repository.git
 * [new branch]      test2 -> test2

Pull Requestの作成

これで作業したファイルをリポジトリにアップロードできたので、Pull Requestを作成します。

git push後にリポジトリを見ると上図のように「Compare & pull request」ボタンが表示されます。このボタンをクリックします。

上図のような画面が出てきますので、以下の項目を入力します。プロダクトによってはテンプレートが用意されていることもありますので、その場合はそれに従ってください。

  • pull requestのタイトル
  • pull requestの内容の説明
  • レビュアー(Reviewer)

Pull Requestのマージ

レビュアー(Reviewer)のapprove(承認)をもらったら、「Merge pull requet」ボタンをクリックして、作業したファイルをリポジトリにマージします。

マージされると下図のようになります。

まとめ

今回は一般的な開発業務におけるgit操作の流れを解説しました。上記の流れが、OSSの開発やGitHubを利用してプロダクトを開発する際の一般的な作業フローになります。

実際の開発現場では、会社やプロジェクト・プロダクトごとに、運用ルールやテンプレートが用意されています。また、本連載の第1回第4回で紹介した管理ツールやGitのクライアントアプリを組み合わせて、進捗管理や開発効率を向上させています。

最後に、公式ドキュメントや使用頻度の高いgitコマンドを再掲します。実際に作業する中で、今回紹介しなかったコマンドなども学んでいっていただけたら幸いです。

参考

公式キュメント

gitコマンドの一覧表(アルファベット順)

よく使うコマンドの一覧です。

コマンド名用途利用頻度備考
git addコミット対象のファイルを登録-
git branchブランチの作成/一覧表示-
git checkout処理対象ブランチの切り替え-
git cloneリポジトリをコピー-
git commit変更されたファイルをコミット(ローカルリポジトリに変更内容を入れ込む)-
git configアカウント名やメールアドレスを指定します-
git diffファイル内の差分箇所を表示-
git gcリポジトリを最適化必要な場面が少ないです
git initリポジトリを新規作成自分で最初から作成する場合に使います
git logコミット履歴を表示-
git merge別のブランチから変更点をマージ-
git mvファイルを移動/ファイル名を変更必要な場面が少ないです
git pullリモートリポジトリの変更点をローカルリポジトリにマージ-
git pushローカルリポジトリの変更点をリモートリポジトリにマージ-
git rebase派生元ブランチに変更点をマージgitコマンドに慣れてから使います
git reset直前のコミットを取消-
git revert特定のコミットを取消-
git stash作業ツリーの状態を一時的に保存gitコマンドに慣れてから使います
git status作業ツリー内の差分ファイルを表示-
git tagコミットにタグを付ける-
  • ◎:毎日のように使うコマンド
  • ○:作業の節目に使うコマンド
  • △:後からマスターしても良いコマンド