注意:この記事を参考にして何かをする前には、
- この記事の妥当性を疑って、別の記事でも確かめてください。
- 重要なリポジトリで作業を行なう前に、テスト用にリポジトリを作って、小規模に試してみてください。
主張:作業中のbranchにmasterでの変更を取り込むには, git merge origin/master
を使おうと思う。
git rebase の記事
Gitで作業中のブランチにmasterの最新の変更を取り込むには、rebase を使います。
という内容の記事が多い。
そうして、conflict が生じたときに、その解決方法を示しているものが多い。
コンフリクト部分の修正手順
「コンフリクトが発生する」 → 「コンフリクトを修正する」→「git add .」 → 「git >rebase --continue」を繰り返す
そうして、このconflictを修正して git add , git rebase --continue
を繰り返すのが、何度も生じてしまのだ。
どうやら、git rebase masterでは,自分の作業用のbranchでの履歴の変更の開始点を、現在のmasterの現在の位置にすり替えて、全ての履歴を作り変えようとするもののようだ。だからbranchでの全ての改変と、branch作成直後から現在のmasterの最新までの履歴の組み合わせで、git rebase master
後の改変後のbranchの履歴を作り上げようとするものようだ。そのためか、git rebase --continue
に、何度も同じ変更点について問いかけられる羽目になる。
(私がしたいのは、masterの最新を取り込む前のつじつまのあった状態を確保しつつ、masterの最新を取り込んだ後のつじつまのあった状態を作ることだ。作業用のbranchの過去の状態とmasterのその間の履歴の状態には関心がないのだ。branchの開発結果が十分なものになったときには, squash mergeをするので、branch内での履歴は意味がない。)
代替方法
git mergeを使う。
実際の手順
以下の内容は参考記事からの引用
※ もし、作業途中のものでcommit出来るものがあればcommitしておく
# masterブランチへ移動
git checkout master
# git pullでmasterを最新に
git pull origin master
# 開発用ブランチへ移動
git checkout 開発用ブランチ
# mergeコマンドでmaserの内容を取り込む
git merge origin master
実際の手順(コメントでいただいた手法)
git fetch origin
git merge origin/master
参考記事:
https://bake0937.hatenablog.com/entry/2017/11/07/081616