GIT REBASE(マージスカッシュ)別のブランチへの私の機能ブランチ
-
09-12-2019 - |
質問
マスターに入る準備ができたら、私の機能ブランチで私を助けるためのgitコマンドを探しています。このgitコマンドは、私の支店に対する私の変更をすべてマスターの上の単一のコミットに押し出すでしょう。私は今日これを行います:
git rebase origin/master
git rebase -i HEAD~4
.
ここで、4はスカッシュへのコミット数です。しかし、これは私が私が持っているコミット数を知ることを私に必要です。私は今日これを実行して実行します:
git log HEAD...origin/master
.
、コミットをカウントする。
私はこれをするより良い方法があるべきだが私は感じます。それとも、他のみんながどのようにしているか?
解決
あなたがしなければならないのは:
git checkout feature_branch
git rebase master
git checkout master
git merge --squash feature_branch
.
実際のマージが起こったかのような作業ツリーと索引状態を生成します(マージ情報を除く)、実際には、実際にはコミットまたは移動したり、次のGit Commitコマンドを実行したりすることも、$ git_dir / merge_headを記録したり、マージコミットを作成します。これにより、エフェクトが別のブランチのマージと同じである現在のブランチの上に単一のコミットを作成できます(Octopusの場合は、)。
その後、既に段階的な変更を集めてください。
他のヒント
ここに私がしていることです。より大きなチームで働く多くの経験から集めたものです。
# Get latest from master
git checkout master
git pull --rebase
# rebase master into your feature branch
git checkout feature/my-feature
git rebase master --preserve-merges
# merge feature into master
git checkout master
# DO ONLY ONE of the 2 options below
# if you only have one or (maybe) 2 commits in your feature branch
git merge feature/my-feature
# OR
# this forces an empty merge commit (useful if we need to roll things back)
git merge --no-ff feature/my-feature
# if you use Github, this should also close the pull request
git push origin master
.
これが助けに役立つことを願っています!
あなたはgit merge --squash
を探していると思います。それはあなたの機能ブランチからマスターへのコミットを持ち込み、それらをカミッシュすることで、単一のコミットを作成することができます。
所属していません StackOverflow