Git rebase(合并壁球)我的特征分支到另一个分支

当他们准备进入Master时,我正在寻找一个git命令来帮助我使用我的功能分支。 这个git命令会将我的分支上的所有更改压缩到master上的单个提交中。 我今天这样做:

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 merge --squash的文档git merge --squash说:

产生工作树和索引状态,就好像真的合并发生了(合并信息除外),但实际上并没有提交或移动HEAD,也没有记录$ GIT_DIR / MERGE_HEAD以使下一个git commit命令创建合并承诺。 这允许您在当前分支上创建一个单独的提交,其效果与合并另一个分支相同(或者在章鱼的情况下更多)。

之后,你可以git commit已经上演的更改。


以下是我从大型团队工作的丰富经验中收集的信息:

# 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 。 它应该将你的特性分支提交到主设备中并压缩它们,这样你就可以创建一个提交。

链接地址: http://www.djcxy.com/p/26073.html

上一篇: Git rebase (Merge Squash) my feature branch onto another branch

下一篇: What to do with branch after merge