如何在Git的交互式变基过程中推送一个中间提交?

3

我有一个本地分支,用于跟踪远程的origin/master分支,并且是通过以下命令创建的:

"git checkout -b mybranch origin/master"

现在,在同一个本地分支上,我有两个不同的本地提交,其中commit2依赖于commit1。

现在,我想将提交1中包含的更改推送到远程分支,应该怎么做呢?

我运行了"git rebase -i"并将commit1更改为edit,当重新设置时,git停留在commit 1处,这正是我想要的。

但是如果我尝试执行像"git push"这样的操作,我会收到错误消息,内容如下:

"fatal: You are not currently on a branch. To push the history leading to the current (detached HEAD) state now, use

git push origin HEAD:<name-of-remote-branch>

假设我的提交1的哈希值为"abce",将此更改推送到远程origin/master的正确方法是什么?
2个回答

3

git status会告诉你如何在你的本地工作副本中取消rebase(可能是git rebase --abort)。

然后你可以像这样推送特定的提交:

git push <remotename> <commit SHA>:<remotebranchname>

2

尽管Lajos的答案是正确的,但你甚至可以更容易地完成它 - 错误消息已经给了你一切 :)

pick xxxxxx 
exec git push <remotename> HEAD:<remotebranchname>
pick xxxxxy
exec git push <remotename> HEAD:<remotebranchname>
pick xxxxxz

这样你总是在推送HEAD,所以你不必复制/粘贴SHA。


1
如果你不想推送到主分支,请务必小心确保使用正确的分支名称。 - ojchase
1
真的,编辑得更加通用。 - watbywbarif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接