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

Spo*_*ser 80 git

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

  1. 创建一个本地存储库
  2. 在该存储库中做一些工作,添加/更改文件等.
  3. 决定我想要一个存储库的中央远程位置,并创建一个
  4. 将所有提交从我的本地存储库推送到这个新的远程存储库

然而,现在我希望能够pushpull从该远程存储库,而无需指定我推或拉离; 我希望我的本地主人跟踪远程主人.

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

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

  1. 用于git clone创建新的本地存储库,并删除旧的存储库.在git克隆之后,新的存储库被设置为跟踪原点.
  2. 手动编辑.git/config以创建主轨道原点.

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

Jor*_*rge 151

使用set-upstream arg:

git branch --set-upstream local-branch-name origin/remote-branch-name
Run Code Online (Sandbox Code Playgroud)

运行上面的命令可以正确更新.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
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅

  • 在Git v1.8.0版本中,不推荐使用`--set-upstream`.使用`--set-upstream-to`代替. (18认同)

Mik*_*ape 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]
Run Code Online (Sandbox Code Playgroud)

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


bco*_*fer 6

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

git checkout --track -b [branch_name] --track origin[or other remote name]/[remote_branch_name] 
Run Code Online (Sandbox Code Playgroud)

甚至更好:

git checkout -t origin/branch_name
Run Code Online (Sandbox Code Playgroud)


faz*_*oso 6

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

git branch --track origin/branch_name
Run Code Online (Sandbox Code Playgroud)

  • 此帖子被自动标记为低质量,因为它太短/只有代码.您是否介意通过添加一些文本来解释它如何解决问题? (4认同)