我正在寻找一个git命令来帮助我准备好进入Master时使用我的功能分支。这个git命令会将我在分支上的所有更改压缩到master之上的单个提交中。我今天这样做:
git rebase origin/master
git rebase -i HEAD~4
其中4是壁球的提交次数。但是,这需要我知道我有多少提交。我今天这样做是通过运行:
git log HEAD...origin/master
然后计算提交。
我觉得应该有更好的方法来做到这一点。或者这也是其他人如何做到的?
答案 0 :(得分:88)
您所要做的就是:
git checkout feature_branch
git rebase master
git checkout master
git merge --squash feature_branch
正如git merge --squash
的{{3}}所说:
生成工作树和索引状态,好像发生了真正的合并(合并信息除外),但实际上没有提交或移动HEAD,也没有记录$ GIT_DIR / MERGE_HEAD导致下一个git commit命令创建合并提交。这允许您在当前分支之上创建单个提交,其效果与合并另一个分支相同(或者在章鱼的情况下更多)。
之后,您可以git commit
您已经上演的更改。
答案 1 :(得分:14)
以下是我所做的工作,这些工作来自于在大型团队中工作的大量经验:
# 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
希望这有帮助!
答案 2 :(得分:2)
我认为您正在寻找git merge --squash
。它应该将您的功能分支中的提交引入master并压缩它们,以便您可以创建一个提交。