🐈

個人的によく使うGitコマンドまとめ(備忘録)

に公開

機能開発する際にfeatureやdevブランチを作成すると思うが、分からなくなることが過去あったから備忘録としてまとめる。

まとめ

  • 事前確認
  • ブランチ作成・移動
  • 作業とコミット
  • リモートへプッシュ
  • Pull requests
  • mainブランチの更新
  • 番外編(git revert コマンド)

事前確認

git branch のみだと

  1. git branch
* main
  dev

ローカルブランチしか表示されない(*が現在作業しているブランチ)が、
2. git branch -a

* main
  dev
  remote/origin/main
  remote/origin/dev

とリモートのブランチまで表示される。

また、現在作業しているブランチが仮にmainブランチでなかった場合は

git switch main
git pull origin main

git switch mainは作業ブランチをmainに切り替える。
git pull origin mainはリモートの最新情報をローカルのmainに更新。
ここで更新を忘れると後の作業でマージする際にコンフリクトを起こすリスクが高まるので注意。

ブランチ作成・移動

mainから作業用の新しい開発ブランチを作成し、切替を行う。

git switch -c feature-xxx

-c オプションにて作成と切替を同時に行っているが、切替が上手く行えているか心配な人はここでも

git branch -a 

で現在のブランチの場所を確認することを習慣づけるのが良いと思う。

作業とコミット

実際にリモートに送るためにローカル環境のファイルを更新した前提でここは話を進める。

git add .

プロジェクト内の全てのファイルをインデックスに登録するコマンド。
基本的に機能ごとに細かくブランチを切ることを習慣づけた方が良いと思うが、チーム開発や複数のファイルを一気に更新した際にエラーを発見しやすくするために細かいgit管理を行う場合には代替案が必要である。

git add <ファイル名>

全て一括で更新すると問題であるのなら、手動でファイルを指定することでその問題を解決することができる。
次にインデックス登録が終わったら、

git commit -m "任意のコメントを残す"

チーム開発だと分かりやすいコメントを残すことが推奨されているが、個人レベルだと適当な文字列を打って(ry

リモートへプッシュ

メインの作業。
先ほど作ったブランチにインデックスに登録したコードを送信する。

git push -u origin feature-xxx

Githubに実際確認しにいったらfeature-xxxブランチが作成され、今書いていたコードが乗っていることを確認できる。

Pull requests

ここが初心者にとっては一番とっつきづらいところだと思う。
一言で言うとレビューとマージの機能を兼ね備えているフェーズである。
個人開発の場合はもう動作確認をここで終わらせていると思うのでマージ機能のみの利用の意味合いだと思うが、
feature-xxx からmain ブランチにプルリクエストを作成することで担当者がレビューを行い修正依頼、コメント等を出せる。
問題がなく承認が出れば自動的にマージされることになる。

リモート上のmainブランチはこの段階で新しいコード(feature-xxx)で上書きされている状態になる。
リモートでは新しいのになっているがローカルではまだmainブランチは古いコードが残っているのでローカルのmainブランチもアップデートする必要がある。それが次だ。

mainブランチの更新

git switch main
git pull origin main

git switch main

で作業ブランチをfeature-xxxからmainに切り替え、

git pull origin main

でGithub上で確認したリモートリポジトリ上のコードをローカルのmainにも統合する。

番外編

以上で一通りの流れを説明したが、実際に開発を行う中で一番使うのはfeature-xxx内で2,3個前のコードの状態に戻したいな~~~。
ということだと思う。
その場合は

1. 対象ブランチに移動

git switch feature-xxx

2. 戻したいコミットのハッシュIDを特定する

git log

ここでコミットコメントとかも表示されるので律儀にどこを修正したか、というのを書いているとここで探すのが楽になる。(仮に残したいコミットIDがabcde12345だとする)

3. 戻したい範囲のコミットを打ち消す

git revert abcde12345.HEAD

このコマンドを打つことで残したいコミット以降のコミット全てを打ち消すことができる。
ローカルで直しただけなので次の項でリモートへプッシュする必要がある。

4. リモートへプッシュする

git push origin feature-xxx

Discussion