压缩本地提交后推送到远程分支失败

时间:2016-07-06 21:58:13

标签: git github version-control rebase git-rebase

我向一个分支做了三次提交,并将它们中的每个提交到远程。然后我需要压缩提交,所以我使用了:

git reset --soft HEAD~3 && git commit
git push --force

在第二行,我收到致命错误:

The current branch [BRANCH-NAME] has no upstream branch.
To push the current branch and set the remote as upstream.

我尝试使用git push --set-upstream origin [BRANCH-NAME]建议的命令,但我被告知当前分支的提示位于远程对应的后面。回顾过去,这是有道理的,因为我目前在我的本地分支的索引1上,而头部位于遥控器的索引3处。

我现在要做的基本上是让分支的压缩版本(我在本地)替换遥控器中的非压缩版本。这里有什么正确的方法?

我看过this和其他几个人,但他们没有帮助。

2 个答案:

答案 0 :(得分:5)

您需要将--force添加到建议的命令中:

git push --set-upstream --force origin [BRANCH-NAME]

使用--set-upstream运行后,您可以从此开始输入git push(或必要时git push -f)。

答案 1 :(得分:0)

您需要重写git历史记录,因为这些更改已提交到远程。一般情况下,除非您绝对必须,否则请避免重写历史记录。进行琐碎的提交并不是压制推送提交的理由。如果他们能留下来,就让他们留下来。

对于git远程仓库,如果你想继续 - 我假设你知道要压缩当地仓库的提交(git rebase -i很简单)。在压榨之后,用-f推动推力。