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



我向一个分支进行了三次提交,并将每个提交推送到远程。然后我需要压缩提交,所以我使用了:

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 上。

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

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

您需要

--force添加到该建议的命令中:

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

使用 --set-upstream 运行它后,从那时起,您只需键入git push(或在必要时键入git push -f)。

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

对于 git 远程存储库,如果您确实希望继续 - 我假设您知道在本地存储库上压制提交(git rebase -i 很简单)。壁球后,用 -f 推 - 力推。

最新更新