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

Coo*_*coa 127 git version-control distributed

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

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

现在,我还没准备好将实验合并到主人.但是我想将它推回到远程仓库,因为那是我与几位同事共享的存储库.我想让他们看看我在实验部门做了些什么.我通常只是通过SSH访问远程仓库.

如何在不影响远程仓库主分支的情况下在远程仓库上共享本地分支?

Von*_*onC 157

根据git push手册页:

 git push origin experimental
Run Code Online (Sandbox Code Playgroud)

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

这与:

git push origin experimental:refs/heads/experimental
Run Code Online (Sandbox Code Playgroud)

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

或者,如git tip中提到的,您可以设置"Branch的默认远程":

您可以使用git config将默认远程分配给给定分支.除非另有说明,否则此默认远程将用于推送该分支.

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

git config branch.<name>.remote <remote> 
Run Code Online (Sandbox Code Playgroud)

可用于手动指定.


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

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

这样,你不必做任何git配置.

git push -u origin experimental
Run Code Online (Sandbox Code Playgroud)

  • 你应该使用`push`选项`-u`来确保你的本地分支在公开之后跟踪远程的分支.如果你忘了使用`-u`选项,你可以在分支中输入`git push -u`然后`git pull`就可以了. (12认同)

Joh*_*hat 15

如果分支的名称是experimental,并且遥控器的名称是origin,那么它就是

git push origin experimental
Run Code Online (Sandbox Code Playgroud)