2016-07-06 114 views
1

我向分支提交了三个提交并将它们各自推送到远程。然后我需要壁球提交,所以我用:压扁本地提交后推送到远程分支失败

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

您需要添加--force到,暗示命令:

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

你与--set-upstream运行它之后,你就可以只输入git push(或git push -f必要时)从那时起。

+0

推力不会影响该分支以外的任何东西,对吗?我是这个部门唯一的工作人员,但是有很多人在工作,我不想影响他们的工作。 – NeonBlueHair

+0

不,因为您正在指定分支名称,这是唯一会推送的分支名称。只是不要输入master作为分支名称;) – jonnystoten

+0

看起来像那样工作。这是一个救生员,非常感谢! – NeonBlueHair

0

您需要重写git历史记录,因为这些更改已提交给远程。一般来说,避免重写历史,除非你绝对必须。进行微小的提交并不是压制提交提交的理由。如果他们能留下来,让他们留下来。如果你想继续 - 我假设你知道压缩你的本地回购(git rebase -i很简单)的提交。在压扁后,用推力推动。

相关问题