--set-upstream
做什么?
我试着通过阅读manual来理解它,但我并没有理解它。
答案 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 fetch
,git pull
或git push
时会知道您要执行的操作。它假定您希望保持本地分支和它正在跟踪的远程分支同步并执行相应的操作来实现此目的。
您可以使用git branch --set-upstream-to
或git 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 push
的 --set-upstream
所做的操作之外,this option 还使 git push
set 至少有两个 configuration variables:
这就是这个命令的全部作用。它将本地分支的上游信息(即远程存储库和分支)存储在配置变量中。
上游信息存储在本地分支名称下。如果您的本地分支名为 main
,则相应的配置变量为 branch.main.remote
和 branch.main.merge
。根据上游信息的存储方式,一个本地分支最多只能有一组上游信息。
您可以使用 git config --get-regexp ^branch\.
查询是否设置了这些配置变量中的任何一个。这将输出所有以“branch”开头的变量。
当这些配置变量被例如 git fetch
、git pull
或 git push
用于确定本地分支的上游存储库和远程分支时,如果您不这样做,就会发生奇迹' t 在命令行上明确指定它们。也就是说,当设置这些配置变量时,您只需发出 git push
并且 git 将知道(使用这些变量)要使用的远程存储库和上游分支。
建议进一步阅读:
但要注意 git 怪癖:
如果
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 进行测试。