Gitコマンド早見表【シーン別で分かりやすい】

Git

はじめに

大手からベンチャーに転職してから初めてgitを触りましたが、最初は分からなすぎて先輩エンジニアに逐一確認しながらgitの作業をしていました。

この記事をみればいつでも振り返れるように、よく使うコマンドをまとめておきます。

Gitでよく使うコマンド

自分のリポジトリと大元のリポジトリを用意するとき

自分の会社では、以下の流れでPRを出します。

  • 大元のリポジトリから自分のリポジトリにフォークする
  • 開発し、自分のリポジトリにプッシュする
  • 自分のリポジトリのブランチから大元のリポジトリのブランチ向けにPRを作成する

上記を行うために、自分のリポジトリと大元のリポジトリを用意しています。

具体的なコマンドはそれぞれ以下です。

gitのremoteブランチの状況確認

$ git remote -v
origin  https://xxx/yyy/zzz.git (fetch)
origin  https://xxx/yyy/zzz.git (push)

originhttps://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の方法をよく忘れるので、今回のように記事にまとめるのは大事ですね。

今後も定期的にアップデートしていこうと思います。

タイトルとURLをコピーしました