2009-07-26 97 views
74

我平时的工作流程是这样的:获取现有的Git分支在Git工作时跟踪远程分支机构

  1. 创建本地存储库
  2. 做在仓库了一些工作,添加/更改文件等
  3. 决定,我想存储库的中央远程位置,并创建一个
  4. 推都来自我的本地库的提交到这个新的远程仓库

但是,我希望能够从此远程存储库中获得pushpull,而无需指定我要推送到哪里或从哪里拉取;我希望我的本地主人跟踪远程主人。

正确这样做的方式对我来说并不清楚,而且我一直无法从文档中确定它,即使它不应该超过一个命令。

,因为它是唯一曾经每个仓库中进行的一次东西,我通常使用的两个简单的,但哈克,解决方案之一:

  1. 使用git clone作出新的本地存储库,并删除了旧。 git克隆后,新的存储库被设置为追踪原点。
  2. 手动编辑.git/config来创建主音轨。

我想我应该可以运行一个命令,可能是某种形式的git remote设置现有存储库有主跟踪远程主。谁能告诉我那个命令是什么?

+0

其实事实证明,类似的问题已经被问过:HTTP://计算器。 com/questions/312055/how-do-i-fix-missing-git-remote-details – SpoonMeiser 2009-07-26 13:16:59

+4

这其实是一个重复的:http://stackoverflow.com/questions/520650/how-do-youma ke-an-existing-git-branch-track-a-remote-branch – takeshin 2011-07-07 12:57:29

+0

重复[如何让现有的Git分支跟踪远程分支?](http://stackoverflow.com/q/520650/456814) 。 – 2014-05-23 18:33:36

回答

146

使用Set-上游ARG:

git branch --set-upstream local-branch-name origin/remote-branch-name 

运行上述命令可以正确更新.git/config文件,甚至可以用此输出验证:

“分支本地分支名称设置为从原点跟踪远程分支远程分支名称”。

编辑:作为martijn说:“在版本GIT中v1.8.0,--set上游不赞成使用--set-上游到代替。“

git branch --set-upstream-top local-branch-name origin/remote-branch-name 
18

git help remote应该告诉你你需要知道什么。我想你想要的是

git remote add [remote-name] [remote-url] 

# Set a local branch to follow the remote 
git config branch.[branch-name].remote [remote-name] 

# Set it to automatically merge with a specific remote branch when you pull 
git config branch.[branch-name].merge [remote-master] 

你也可以手动编辑.git/config来设置它们。

+0

另一个选择是制作中央存储库,然后删除工作目录并通过从中央存储库中克隆来重新创建它。尽管如此,编辑.git/config将会提供更多信息。 – 2009-07-26 14:00:27

6

您还可以,如果你想创建一个新的本地分支用于跟踪远程分支使用:

git checkout --track -b [branch_name] --track origin[or other remote name]/[remote_branch_name] 

甚至更​​好:

git checkout -t origin/branch_name 
5

在GIT中的较新版本,您可以使用

git branch --track origin/branch_name 
1

The --set-upstream flag is deprecated and will be removed.

git branch master --set-upstream-to myupstream/master