はじめに
タイトル通り。GitHub上でPullRequestを作った後、誰もmergeしていないはずなのに何故か勝手にmergeされていて焦った。
準備
- GitHubで適当なレポジトリを作る
- 作ったレポジトリをclone
$ git clone git@github.com:hogehoge.git
- 適当なファイルを作ってmasterブランチにcommit & push
$ git checkout master
$ touch sample0.txt
$ git add .
$ git commit -am "Initial commit"
$ git push -u origin master
勝手にマージされる事例
パターン1
- 適当なブランチを作る
$ git checkout -b branch1
- 適当に何かしてコミット
$ touch sample1.txt
$ git add .
$ git commit -am "Commit on branch1"
$ git push --set-upstream origin branch1
- GitHub上で、
branch1 -> master
の Pull Request を作る … (1) - ローカル上で、
master
にbranch1
をmerge & push
$ git checkout master
$ git merge branch1
$ git push -u origin master
これで、(1) で作ったPull Requestが勝手にマージされている。
パターン2
- 適当なブランチを作る
$ git checkout -b branch2
- 適当に何かしてコミット
$ touch sample2.txt
$ git add .
$ git commit -am "Commit on branch2"
$ git push --set-upstream origin branch2
- GitHub上で、
branch2 -> master
の Pull Request を作る … (2) - ローカル上で、
master
をbranch2
にrebase & push (この場合はfast-forwardなのでmergeと変わらないが)
$ git checkout master
$ git rebase branch2
$ git push -u origin master
これで、(2) で作ったPull Requestが勝手にmergeされている。
終わりに
初見だと勝手にmergeされていてビビるが、冷静に考えると当然のことだった。
勝手にmergeされて然るべきときには勝手にmergeされることを知った。
merge先がmaster
とかdevelop
のときにはこんなことは無いと思うが、
featureブランチで開発していて細かい機能を追加 → featureブランチにPull Request
みたいなときにはうっかりするとやってしまうことがある気がする。(あった。)