はじめに
大手からベンチャーに転職してから初めてgitを触りましたが、最初は分からなすぎて先輩エンジニアに逐一確認しながらgitの作業をしていました。
この記事をみればいつでも振り返れるように、よく使うコマンドをまとめておきます。
Gitでよく使うコマンド
自分のリポジトリと大元のリポジトリを用意するとき
自分の会社では、以下の流れでPRを出します。
- 大元のリポジトリから自分のリポジトリにフォークする
- 開発し、自分のリポジトリにプッシュする
- 自分のリポジトリのブランチから大元のリポジトリのブランチ向けにPRを作成する
上記を行うために、自分のリポジトリと大元のリポジトリを用意しています。
具体的なコマンドはそれぞれ以下です。
gitのremoteブランチの状況確認
$ git remote -v
origin https://xxx/yyy/zzz.git (fetch)
origin https://xxx/yyy/zzz.git (push)
origin
がhttps://xxx/yyy/zzz.git
に紐づいていることが分かる
リモート名を変更する
$ git remote rename origin upstream
リモート名がorigin
からupstream
に変わっていることを確認できる
$ git remote -v
upstream https://xxx/yyy/zzz.git (fetch)
upstream https://xxx/yyy/zzz.git (push)
新しくリモートブランチを追加する
git remote add origin https://XXX/YYY/ZZZ.git
リモートブランチに以下が追加されていることが分かる
$ git remote -v
origin https://XXX/YYY/ZZZ.git (fetch)
origin https://XXX/YYY/ZZZ.git (push)
〜
PRの指摘を反映したいとき
PRを出した後にレビュアーから指摘をいただきます。
その指摘を同じPRに取り込みたい時の方法を紹介します。
ファイルを修正し、コミットする
$ git add 修正ファイル
$ git commit -m "コミットメッセージ"
PRを作成したブランチにプッシュする
$ git push PRを作成した時と同じブランチ
これでPRをみてみると、PRに修正内容が反映されます。
PRを出したけど「Rebaseして」と言われたとき
開発を進めていると以下のことが良く起こります。
- 自分が開発している間に他の開発者の作業ブランチが大元のブランチにマージされる
- PRを作成し、PRの内容には問題ないけど、「Rebaseして」と言われる
これに対応する方法を以下にまとめます。
上記の状況を再現してみる
適当にリポジトリを作成し、クローンする
git clone https://XXX/YYY/ZZZ.git
mainブランチからfeatureブランチを作成する
$ git switch -c feature
featureブランチにファイルを追加し、プッシュする
$ touch a.txt
$ vi a.txt
$ git add a.txt
$ git commit -m "add a.txt from feature branch"
$ git push origin feature
mainブランチでREADME.mdを更新し、プッシュする
$ vi README.md
$ git commit -am "Update read.me from main branch"
$ git push origin main
ここまですると、git logが以下の状態となる
$ git log --graph --oneline --all
* 93a1860 (HEAD -> feature, origin/feature) add a.txt from feature branch
| * 160be29 (origin/main, origin/HEAD, main) Update read.me from main branch
|/
* 685897a Initial commit
本来であれば、160be29
からfeatureブランチを作成すべきですが、作業中にmainブランチが更新されたため、685897a
から枝分かれしている状態となっています。
この状態でfeatureブランチをmainブランチにマージすると、コミット履歴が汚れるため、「featureブランチをRebaseしてね」と先輩エンジニアに言われます。
これは「Rebaseすることで、685897a
-> 160be29
-> XXXXXXX(featureブランチのID)
としてね」という意味です。
それでは、Rebaseの方法を以下にまとめます。
mainブランチに移動し、リモートブランチの情報をプルする
$ git switch main
$ git pull origin main
featureブランチに移動し、Rebaseする
$ git switch feature
$ git rebase main
この意味は、main
ブランチを軸として、feature
ブランチをくっつける、という意味です。
ログをみてみると、以下のようになり、main
ブランチからfeature
ブランチが作成されています。
$ git log --graph --oneline --all
* afc97f4 (HEAD -> feature) add a.txt from feature branch
* 160be29 (origin/main, origin/HEAD, main) Update read.me from main branch
* 685897a Initial commit
リモートブランチに強制プッシュする
git push -f origin feature
最後にリモートブランチに強制プッシュすれば完了です。
まとめ
今回は実務でよく使うgitのコマンドについてまとめました。
gitコマンドやrebaseの方法をよく忘れるので、今回のように記事にまとめるのは大事ですね。
今後も定期的にアップデートしていこうと思います。