如何使用Git用不同的本地分支覆盖远程分支

55

我有一个远程分支,作为拉取请求的基础。

我主要在另一个分支上工作,现在应该替换旧分支。

我尝试做一个 git push remote oldBranch -f 但那只是把我的最新本地 oldBranch 推送到 git 服务器而不是当前分支,无论我当前在哪个分支。

如何用我的本地分支替换远程分支?

编辑: 如果有人感兴趣,这就是我让它正常工作的方法:

git checkout oldBranch
git branch -m 'oldBranchToBeReplaced'
git checkout newBranch
git branch -m oldBranch
git push myrepo oldBranch -f
1个回答

125

您可以使用local-name:remote-name语法来进行git push:

git push origin newBranch:oldBranch

这会将newBranch推送到远端,但使用 oldBranch 的名称。

由于oldBranch可能已经存在,你需要强制推送:

git push origin +newBranch:oldBranch

我更喜欢使用+而不是-f,但-f也可以使用。

要在远程端删除一个分支,请执行以下操作推送一个“空分支”:

git push origin :deleteMe

12
不错的回答。顺便提一下,+--force 的唯一区别在于同时推送多个分支时。使用 -f 会强制推送所有分支,而+ 只会强制推送它所附加的 refspec,因此我同意 + 通常是一个更好的习惯,尽管当只推送一个分支时没有任何区别,并且如果没有指定本地分支名称,则无法依赖默认推送。 - Jeff Puckett
尝试了很多变化,这是唯一有效的一个。 - Mote Zart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接