如何压扁git后提交git?
这给出了压扁多个提交的一个很好的解释:
http://git-scm.com/book/en/Git-Branching-Rebasing
但它不适用于已经推送的提交。 如何在我的本地和远程回购中压缩最近的几次提交?
编辑:当我做git rebase -i origin/master~4 master ,将第一个保存为pick ,将其他三个设置为squash ,然后退出(通过emacs中的cx cc),我得到:
$ git rebase -i origin/master~4 master
# Not currently on any branch.
nothing to commit (working directory clean)
Could not apply 2f40e2c... Revert "issue 4427: bpf device permission change option added"
$ git rebase -i origin/master~4 master
Interactive rebase already started
其中2f40是pick提交。 现在4个提交中没有一个出现在git log 。 我希望我的编辑器能够重新启动,以便我可以输入提交消息。 我究竟做错了什么?
南瓜本地承诺
git rebase -i origin/master~4 master
然后用力推
git push origin +master
--force和+之间的区别
从git push文档:
请注意,-- --force适用于所有推送的引用,因此在push.default设置为matching使用它,或者与使用remote.*.push配置的多个推送目标一起使用remote.*.push push.default可以覆盖除当前分支以外的引用(包括本地引用严格落后于他们的远程对手)。 要强制推送到一个分支,使用refspec前面的+来推送(例如git push origin +master强制推送到master分支)。
在一个分支上,我能够像这样做(最后4次提交)
git checkout my_branch
git reset --soft HEAD~4
git commit
git push --force origin my_branch
只需创建一个branch来处理和不处理master ,就可以避免许多问题:
git checkout -b mybranch
以下作品remote提交已推及的混合物remote推送的提交/ local唯一的承诺:
# example merging 4 commits
git checkout mybranch
git rebase -i mybranch~4 mybranch
# at the interactive screen
# choose fixup for commit: 2 / 3 / 4
git push -u origin +mybranch
我也有一些拉动请求说明,这可能会有帮助。
链接地址: http://www.djcxy.com/p/1353.html上一篇: How to squash commits in git after they have been pushed?
