読者です 読者をやめる 読者になる 読者になる

gitのmergeは全部手動でやるのが吉かもしれない

大体はgit pull使ってたけど、pullコマンドはfetchとmergeを両方同時でやっているので、細かいところの調整ができないし、なにやってるのかわからなくなる。

この記事とかすごくためになります。

Git pullを使うべきでない3つの理由 - DQNEO起業日記

なので毎回ブランチをmergeするときは、手動でやるとかのルールを自分で設けておこうと思った。

この記事では手動mergeの手順をまとめておく。

ローカルでの手動merge手順

以下の記事を参考にさせていただきました。

Githubで手動マージが必要になった時に実行するコマンド | Hack

ローカルのブランチをてもとでmergeするときの方法を簡単ですが書いておきます。

まずは変更を取り込む(メインの流れになる)ブランチにチェックアウト。

$ git checkout master

git mergeコマンドでmergeします。オプションは基本的に--no-offを使いたい。これならトピックブランチがあったこともコミットログに残るので。(git pullのデフォルトの挙動はこれかな?)

$ git merge --no-ff totz_bugfix

git mergeコマンドのオプションについては以下を参考に

  • 図で分かるgit-mergeの--ff, --no-ff, --squashの違い

図で分かるgit-mergeの--ff, --no-ff, --squashの違い - アジャイルSEを目指すブログ

git mergeコマンドにはいくつかのオプションがあって、mergeのときの挙動が違ってくる。表面的にもコミットログが違うものになるので、このオプションを知っておくことも大事だ。

そしたらリモートにも変更を反映させます。

$ git push origin master

必要でなければトピックブランチは削除。

$ git branch -d totz_bugfix

一括で削除したりmergeしたときに自動で削除できるようにしてる方もいた。

Git でマージ済みのブランチを一括削除する - Qiita