我怎样才能将两个提交合并成一个?
我试图将2个提交合并为1,因此我遵循git准备好的“用rebase压缩提交”。
我跑了
git rebase --interactive HEAD~2
在最终的编辑器中,我将pick
为squash
,然后save-quit,但rebase因错误而失败
如果没有以前的提交,不能“压扁”
现在我的工作树已经达到这个状态,我无法恢复。 命令git rebase --interactive HEAD~2
失败
交互式重新分配已经开始
和git rebase --continue
失败
如果没有以前的提交,不能“压扁”
回到你开始的地方
$ git rebase --abort
说你的历史是
$ git log --pretty=oneline
a931ac7c808e2471b22b5bd20f0cad046b1c5d0d c
b76d157d507e819d7511132bdb5a80dd421d854f b
df239176e1a2ffac927d8b496ea00d5488481db5 a
也就是说,a是第一次提交,然后是b,最后是c。 在提交c之后,我们决定一起压缩b和c:
运行git rebase --interactive HEAD~2
给你一个编辑器
pick b76d157 b
pick a931ac7 c
# Rebase df23917..a931ac7 onto df23917
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
将b的pick
改为squash
会导致你看到的错误,但是如果你想将c压缩到b中(更新到更老的),可以将文本改为
pick b76d157 b
squash a931ac7 c
并保存 - 退出你的编辑器,你会得到另一个编辑器的内容是
# This is a combination of 2 commits.
# The first commit's message is:
b
# This is the 2nd commit message:
c
保存并退出时,编辑文件的内容将成为新组合提交的提交消息:
$ git log --pretty=oneline
18fd73d3ce748f2a58d1b566c03dd9dafe0b6b4f b and c
df239176e1a2ffac927d8b496ea00d5488481db5 a
如果有多个提交,你可以使用git rebase -i
将两个提交压缩成一个。
如果只有两个要合并的提交,并且它们是“最近的两个”,则可以使用以下命令将两个提交合并为一个:
git reset --soft "HEAD^"
git commit --amend
首先你应该检查你有多少次提交:
git log
有两种状态:
一个是只有两个提交:
例如:
commit A
commit B
(在这种情况下,你不能使用git rebase来做),你需要做下面的事情。
$ git reset --soft HEAD^1
$ git commit --amend
另一个是有两个以上的提交; 你想合并提交C和D.
例如:
commit A
commit B
commit C
commit D
(在这种情况下,你可以使用git rebase)
git rebase -i B
而不是用“南瓜”来做。 其余的部分很简单。 如果您仍不知道,请阅读http://zerodie.github.io/blog/2012/01/19/git-rebase-i/
链接地址: http://www.djcxy.com/p/549.html