LoginSignup
0
0

More than 1 year has passed since last update.

git rebase master を使うのは止めようと思う

Last updated at Posted at 2022-06-07

注意:この記事を参考にして何かをする前には、

  • この記事の妥当性を疑って、別の記事でも確かめてください。
  • 重要なリポジトリで作業を行なう前に、テスト用にリポジトリを作って、小規模に試してみてください。

主張:作業中の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

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0