開発業務をしている間に、マスターブランチがどんどん更新され、作業ブランチが古くなってしまう。
こんなケースは特にチームで開発をしていると、よくあるパターンですね。
そこで役立つのが「git rebase
」コマンドです。
自分は常日頃、開発作業が終わり、プルリクを出す前にいったんブランチを最新の状態にしておくことを心掛けています。
そうしておけば、コンフリクトの可能性も減らすことができますし、追加された機能やレイアウトなどをレビュー時に混同しなくて済むからです。
※ もし、ブランチが古い状態のままでは、特に大きな変更があった場合、最悪、動かないケースも出てきます。
Gitで作業ブランチを最新状態にする方法
1. 作業ブランチが終了したら、ブランチをmaster(main)にする
まず、作業が終わったら、ブランチをmaster(main)にします。
command
git checkout master
2. masterを最新の状態にする
ブランチを master に切り替えたら、次は GitHub リポジトリ上でマージされたものをプルします。(GitLabとかのケースもあるかな)
command
git pull
これで、リモートリポジトリ上の master の最新の状態を取り入れることができました。
3. ブランチを作業ブランチに戻す
master を最新の状態にした後、元の作業ブランチに切り替えます。
command
git checkout 作業ブランチ名
これで開発作業ブランチに戻りました。
4. git rebase を実行する
さて、最終作業です。master を最新にしたので、それをリベースし、開発作業ブランチに取り込みます。
command
git rebase master
これで、master の最新の状態が作業ブランチに取り込むことができます。
イメージ的には、作業ブランチを切ったあと、最初のコミットのすぐ下に master の最新履歴が入ります。
伝わりにくいかもなので、git log
を実行すると、コミット履歴が確認できます。masterの最新履歴が土台にある感じなので、実際に視覚的に見てみればすぐに理解できると思います。
注意点としては、git rebase
を実行すると、コミットハッシュ値が一新されてしまうことです。なぜその注意が必要なのかというと、プルリクを出した後に git rebase
をしてしまうと、当該ブランチとの整合性が取れなくなってしまいます。
もし、そのような事態になった場合は、一旦プルリクをクローズし、再度プルリクを作り直す形になってしまいます。
それは、例えば、レビュワーがレビューを進めていて、コードの指摘や、修正があった場合などに、整合性が合わず、プッシュできなくなるため、レビュワーにも迷惑をかけてしまいます。(間違っても強制プッシュ force をするのはやめておきましょう)
工数も無駄に消費してしまうので予め気をつけましょう。
以上の観点から、間違ってもプルリクを出したあとに git rebase
はしないように注意してください。
最後に
バージョン管理ツールはちょっと工夫した使いかたを身に付けるだけで、チーム内においても効率的に開発作業を進めることが可能になります。
Git は従来の基礎コマンドは誰でも覚えるべきものですが、git rebase
も 覚えておくと便利だと思います!
Gitを使い始め、これからもエンジニアへの道を目指したい方は以下の記事も有益です。(12,000文字ほどの大作)