さくらのVPSを使ってシステム開発に必要な知識を学ぶ 〜第6回〜
はじめに
本連載は、システム開発に必要な知識を得るために、一通りの流れを学ぶことを目指しています。今回は一般的な業務におけるgit操作の流れを解説します。
前回までの記事で開発環境を整えた後、基本的に以下の流れで開発作業を進めます。
- git clone
- git branch
- git checkout
- git add
- git commit
- git push
- Pull Request の作成
- 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 | コミットにタグを付ける | ○ | - |
- ◎:毎日のように使うコマンド
- ○:作業の節目に使うコマンド
- △:後からマスターしても良いコマンド