Git如何改变我已推出的(个人)分支?

时间:2012-10-24 10:26:08

标签: git git-rebase

我看了git book,但不知何故忘记了rule说:

  

不要将已推送到公共存储库的提交重新绑定。

     

如果您遵循该指南,您会没事的。如果你不这样做,人们   会恨你,你会被朋友和家人嘲笑。

在这里,我在工作中创建了一个本地分支功能-xyz,我将其推送到远程仓库。我把它拉到另一台电脑上,做了一些工作并推了推。回到工作岗位上,我拉开了分店。经过几次提交后,我重新设置了我的分支机构。现在我已经完成了feature-xyz并希望将其推送到远程存储库,但这显然是因为以下消息而失败:

$ git push origin feature-xyz
To git@<url>:<repo>.git
 ! [rejected]        feature-xyz -> feature-xyz (non-fast-forward)
error: failed to push some refs to 'git@<url>:<repo>.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

显然拉远程分支会产生各种冲突。所以我决定删除远程分支:

git push origin :feature-xyz

并重新创建它:

git push origin feature-xyz

但是我想知道是否有更好的工作流程而不涉及删除远程分支?

1 个答案:

答案 0 :(得分:5)

然后不要改变。合并。
即,不要在feature-branch之上重新anotherBranch。将anotherBranch合并到feature-branch

请注意,删除远程分支或push --force相同的分支是相同的 在这两种情况下,您都发布了新的SHA1,重写了历史记录,这对于之前已经提取过feature-branch的其他人来说可能不方便。