' - 上游'做什么?

时间:2013-08-03 10:38:50

标签: git

--set-upstream做什么?

我试着通过阅读manual来理解它,但我并没有理解它。

4 个答案:

答案 0 :(得分:308)

git branch --set-upstream <remote-branch>

设置当前本地分支的默认远程分支。

任何未来git pull命令(当前本地分支签出),
将尝试将<remote-branch>的提交引入当前的本地分支。


避免必须明确执行--set-upstream的一种方法是 使用速记标记-u以及第一个git push如下

git push -u origin local-branch

这将自动设置任何未来推/拉尝试的上游关联 有关详情,请查看此detailed explanation about upstream branches and tracking


  

为避免混淆,git的最新版本弃用了这个有点模棱两可的--set-upstream选项,支持使用相同语法和行为的更详细的--set-upstream-to选项

git branch --set-upstream-to <remote-branch>

答案 1 :(得分:31)

当您推送到遥控器并使用--set-upstream标志时,git将您要推送的分支设置为您正在推送的分支的远程跟踪分支。

添加远程跟踪分支意味着git在将来git fetchgit pullgit push时会知道您要执行的操作。它假定您希望保持本地分支和它正在跟踪的远程分支同步并执行相应的操作来实现此目的。

您可以使用git branch --set-upstream-togit checkout --track实现相同的目标。有关详细信息,请参阅tracking branches上的git帮助页面。

答案 2 :(得分:2)

git branch --set-upstream <<origin/branch>>不再受正式支持,并由git branch --set-upstream-to <<origin/branch>>

取代

答案 3 :(得分:0)

我假设您的问题是:

<块引用>

git push --set-upstream <repository> <branchname> 有什么作用?

如您所见,我假设有问题的 git 命令是 git push。我希望这就是你的意思。为了简化答案,我进一步指定您所在的本地分支 与您要推送到的上游存储库 上的远程分支具有相同的名称。最后,我假设一个通用的 git 配置。

话虽如此,这就是我的答案

除了不带选项 git push--set-upstream 所做的操作之外,this option 还使 git push set 至少有两个 configuration variables

  • branch..remote =
  • branch..merge = /ref/heads/

这就是这个命令的全部作用。它将本地分支的上游信息(即远程存储库和分支)存储在配置变量中。

上游信息存储在本地分支名称下。如果您的本地分支名为 main,则相应的配置变量为 branch.main.remotebranch.main.merge。根据上游信息的存储方式,一个本地分支最多只能有一组上游信息。

您可以使用 git config --get-regexp ^branch\. 查询是否设置了这些配置变量中的任何一个。这将输出所有以“branch”开头的变量。

当这些配置变量被例如 git fetchgit pullgit push 用于确定本地分支的上游存储库和远程分支时,如果您不这样做,就会发生奇迹' t 在命令行上明确指定它们。也就是说,当设置这些配置变量时,您只需发出 git push 并且 git 将知道(使用这些变量)要使用的远程存储库和上游分支。

建议进一步阅读:

但要注意 git 怪癖

如果 作为 URL 或文件路径给出,请参见示例 this example

git push --set-upstream git@gitlab.example.com:namespace/myproject.git master

git push 不会在 .git/refs/remotes/<repository>

中创建对远程分支头的引用

仅当上游存储库已使用

命名时
git remote add <repository> <URL>

git push --set-upstream 已与此名称一起使用,远程跟踪分支的全部功能可在所有 git 命令中使用。

建议进一步阅读:

仅供参考:所有命令均在 Windows 上使用 git V2.32 进行测试。