【发布时间】:2018-01-10 11:57:29
【问题描述】:
我了解git push 中的 -u 参数将本地分支与其对应的远程分支相关联,因此 git pull 和 git push 可以在没有额外参数的情况下使用。
但是,正如这个答案 (https://stackoverflow.com/a/16018004/8278160) 所述:
git push -u origin master
等同于:
git push origin master; git branch --set-upstream master origin/master
正如 Casey Li 在此视频 (https://www.youtube.com/watch?v=XogN0Q4sb9o) 中所述,origin/repo 格式用于指定一个远程跟踪分支。
因此,上述行中的git branch --set-upstream master origin/master 是将本地分支master 与其对应的远程tracking 分支(origin/master)关联还是直接关联到远程分支?
【问题讨论】:
-
“……与其对应的远程跟踪分支(origin/master),还是直接到远程分支?”听起来是一回事?
-
@Ryan 这个答案另有说明(stackoverflow.com/a/16408515/8278160),这是我感到困惑的主要原因。
-
它将本地分支与远程跟踪分支和远程分支相关联。对于
git push,根据本地分支更新远程跟踪分支和远程分支。对于git pull,根据远程分支更新远程跟踪分支和本地分支。请注意,git push的远程分支和远程跟踪分支可能与git pull的不同。您可以从 repoA 拉取并推送到 repoB。 -
请注意,
git push <remote> <name>有效地扩展为git push <remote> <name>:<name>。这要求<remote>的 Git 设置自己的<name>(如有必要,扩展,以便git push <remote> newbr最终变成git push <remote> <newbr>:refs/heads/<newbr>)。如果成功,则意味着远程上的<name>现在映射到相应的哈希 ID,因此现在您自己的 Git 更新或创建远程跟踪分支,通常命名为refs/remotes/<remote>/<name>。一旦refs/remotes/<remote>/<name>存在于您自己的仓库中,您的 Git 就可以将其设置为上游。
标签: git github git-branch git-push