如何将本地Git分支复制到远程仓库


127

到目前为止,我已采取以下步骤:

  1. 克隆了一个远程Git仓库
  2. 将主分支分支到实验分支
  3. 在实验分支中编辑/测试/提交的代码

现在,我还没有准备好将实验性项目合并到主项目中。但是,我确实想将其推回远程仓库,因为那是我与一些同事共享的存储库。我希望他们看到我在实验分支中所做的事情。我通常只通过SSH访问远程仓库。

如何在远程存储库上共享我的本地分支,而又不影响远程存储库的主分支?


该链接在这方面也非常有用。分享git分支
Vishnu Kumar,

Answers:


157

根据git push手册页

 git push origin experimental

experimental在源存储库中找到匹配的引用(很可能会找到refs/heads/experimental),并refs/heads/experimental在源存储库中更新相同的引用(例如)。
如果experimental不存在,则将创建它

这与以下内容相同:

git push origin experimental:refs/heads/experimental

experimental通过复制当前experimental分支在原始存储库中创建分支。仅当本地名称和远程名称不同时才需要使用
此表单在远程存储库中创建新的分支或标记。否则,引用名称本身将起作用。

或者,如git tip中所述,您可以设置“分支的默认遥控器”:

您可以使用git config将默认的远程分配给给定的分支。除非另外指定,否则将使用此默认远程服务器来推送该分支。

当您使用git clone时,已经为您完成了此操作,允许您使用不带任何参数的git push来推送本地master分支以更新原始存储库的master分支。

git config branch.<name>.remote <remote> 

可用于手动指定。


Jan建议(对于git> = 1.7.0)建议使用push -u(或push --set-upstream)选项:

对于每个最新的或成功推送的分支,添加上游(跟踪)引用,该引用由无参数git-pull(1)和其他命令使用。

这样,您无需执行任何git配置。

git push -u origin experimental

12
您应该使用-u选项push来确保您的本地分支在将其公开后跟踪该远程分支。如果您忘记使用该-u选项,则只需git push -u稍后在分支中键入即可git pull
1

我已经注意到,当您执行此操作时git push origin experimental,没有任何包被上传的证据。看起来遥控器已经拥有您之前的推送中的所有内容;它只需要挂在refs上
卡兹(Kaz)2012年

@Kaz:如果这些新的提交已经在远程的另一个分支中推送,它将具有所有的内容。在这种情况下,git push origin experimental只需experimental在远程上创建分支。
VonC 2012年

谢谢!您的回答非常有帮助。
哈克(Hakre)2012年

15

如果你的分支的名称experimental,和远程的名字origin,那么它的

git push origin experimental

与上面的评论相同,但是这是否会在远程仓库上隐式创建实验分支,还是将其推送到远程主机?
Coocoo4Cocoa

1
它会推动实验分支,并且不会在本地或远程接触主服务器
John Douthat

1

git push -u <remote-name> <branch-name>如果新创建的分支不是从相同的仓库中衍生出来的,则不起作用,即,如果您尚未使用创建新分支git checkout -b new_branch,那么这将不起作用。

例如,我在本地克隆了两个不同的存储库,然后不得不将repo2 / branch1复制到repo1 /,然后再将其推送。

链接帮助我将本地分支(从另一个存储库克隆)推到远程存储库:



0

tl; dr

$ git push --set-upstream origin your_new_branch

更多信息

在对您进行了几次提交之后:

$ git checkout -b your_new_branch
$ git add file
$ git commit -m "changed file"

您将指定上游的分支推送到其中一个远程存储库中,如下所示:

$ git push --set-upstream REMOTE YOUR_BRANCH

可以看到遥控器

$ git remote -v

通常,您将有一个默认的remote origin。所以你的命令看起来像:

$ git push --set-upstream origin your_new_branch

并且所有随之而来的推动都可以用git push

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.