我向一个分支做了三次提交,并将它们中的每个提交到远程。然后我需要压缩提交,所以我使用了:
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和其他几个人,但他们没有帮助。
答案 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推动推力。