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

Man*_*ler 15 git

我有一个远程分支,是pullrequest的基础.

我主要在不同的分支上工作,但现在应该替换旧的分支.

我试图做一个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
Run Code Online (Sandbox Code Playgroud)

Mar*_*olt 46

您可以使用local-name:remote-namegit push 的语法:

git push origin newBranch:oldBranch
Run Code Online (Sandbox Code Playgroud)

这会推动newBranch,但使用oldBranch原点上的名称.

因为oldBranch可能已经存在,你必须强制它:

git push origin +newBranch:oldBranch
Run Code Online (Sandbox Code Playgroud)

(我更喜欢+而不是-f,但-f也会工作)

要删除远程端的分支,请按下"空分支",如下所示:

git push origin :deleteMe
Run Code Online (Sandbox Code Playgroud)

  • +1好的答案.旁注:`+`和`--force`之间的唯一区别是同时推送多个分支.`-f`将强制所有分支,而`+`只会强制它附加的refspec,所以我同意`+`通常是一个更好的习惯,虽然只推动一个分支没有区别,如果依赖它将无法工作在没有指定本地分支名称的默认推送上. (2认同)