获取现有的git分支来跟踪远程分支

时间:2009-07-26 12:58:11

标签: git

使用git时我常用的工作流程是这样的:

  1. 创建本地存储库
  2. 在该存储库中做一些工作,添加/更改文件等。
  3. 决定我想要存储库的中央远程位置,并创建一个
  4. 将所有提交从我的本地存储库推送到此新的远程存储库
  5. 但是,现在,我希望能够从此远程存储库中pushpull,而无需指定我要推送或从中拉出的位置;我希望我的本地主人跟踪远程主人。

    正确这样做的方式对我来说并不清楚,我无法从文档中确定它,即使它不应该只是一个命令。< / p>

    因为它是每个存储库只执行过一次的事情,所以我通常使用两个简单但有问题的解决方案之一:

    1. 使用git clone创建一个新的本地存储库,并删除旧的存储库。在git克隆之后,新的存储库被设置为跟踪原点。
    2. 手动编辑.git / config以创建主轨道。
    3. 我想我应该能够运行一个命令,可能是某种形式的git remote来设置一个现有的存储库,让主控跟踪一个远程主控。谁能告诉我这个命令是什么?

7 个答案:

答案 0 :(得分:149)

使用set-upstream arg:

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

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

“分支local-branch-name设置为从源跟踪远程分支remote-branch-name。”

编辑:正如martijn所述:“在Git v1.8.0版本中,不推荐使用-set-upstream。请改用--set-upstream-to。”

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

有关详细信息,请参阅this

答案 1 :(得分:19)

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来设置它们。

答案 2 :(得分:6)

如果要创建新的本地分支以跟踪远程分支,也可以使用此选项:

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

甚至更好:

git checkout -t origin/branch_name

答案 3 :(得分:5)

在较新版本的git上,您可以使用

git branch --track origin/branch_name

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

快进了三年(请参阅我在那做的事情:-)),我尝试使用Git Bash拉出一个未跟踪的分支并收到

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> develop

以下实现了我所需要的:

$ git branch --set-upstream-to=origin/develop develop Branch 'develop' set up to track remote branch 'develop' from 'origin'.

答案 6 :(得分:-1)

使用此命令:

git clone [<options>] [--] <repo> [<dir>]