git branch --set-upstream-to和git remote add origin的区别

21
我发现很难区分git branch --set-upstream-togit remote add origin以及git remote add upstream的区别,基本上我创建了一个裸仓库(使用git init --bare),它在网络上共享,这样其他开发人员也可以推送到它,以便我们在本地版本控制我们的项目,但我不确定在上述三个命令中应该运行哪个(或是否还有其他命令)来跟踪那个中央仓库,例如我们从所有项目中推送更改到那个中央裸仓库,并从中拉取/获取。请问有人能解释一下吗?

可能会感兴趣(我知道它对我有帮助!)[如何将包含所有分支的git存储库从Bitbucket移动到GitHub?](https://dev59.com/I2Ah5IYBdhLWcg3wBfeM) - That Brazilian Guy
2个回答

22

git remote add创建了一个远程仓库的简写名称,它与另一个仓库相关联。 git branch --set-upstream-to将一个分支设置为要被指定远程仓库中的分支所跟踪。

您想要做的是跟踪一个远程分支,可以使用git branch --set-upstream-to或更简单的方式git branch -u来完成。

当您从另一个仓库克隆一个仓库时,会创建一个名为origin的远程仓库,并检出master分支。要使本地的master分支跟踪远程的master分支,请执行git branch -u origin/master命令,该命令从本地的master分支执行。


1
这可能是我在Git存储库中仍然经常混淆的最常见的事情。感谢澄清! - jffgrdnr
1
告诉远程分支跟踪另一个分支意味着什么? - bubakazouba
1
评论区非常有限,简短回答是远程分支不会跟踪另一个分支--本地分支会跟踪远程分支以确定其是否为最新状态。如需更完整的答案,请将此作为完整问题提出。 - David Culp

3
为了使用set-upstream-to设置远程跟踪分支,您需要定义一个远程仓库。
当您的开发者克隆裸仓库时,会自动为他们定义一个名为origin的远程仓库。也就是说,在每个本地克隆中,git remote -v命令将列出一个名为origin的远程仓库,引用裸仓库。他们不需要定义一个名为upstream的远程仓库。
然而,这并不意味着所有来自该远程仓库的分支都被本地分支跟踪。
这就是git branch --set-upstream-to的作用所在。

1
请参阅以下链接:https://dev59.com/mnRB5IYBdhLWcg3wxZ1K 和 http://www.gitguys.com/topics/the-configuration-file-branch-section/(或http://www.gitguys.com/topics/tracking-branches-and-remote-tracking-branches/)以及http://git-scm.com/book/en/Git-Branching-Remote-Branches。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接