【问题标题】:Does "-u" in "git push -u origin master" add a reference to a remote tracking branch?“git push -u origin master”中的“-u”是否添加了对远程跟踪分支的引用?
【发布时间】: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


【解决方案1】:

将本地分支master与其对应的远程跟踪分支(origin/master)关联,还是直接关联到远程分支?

在本地 repo 中,没有远程分支,只有远程跟踪分支,它们是本地分支跟踪(即保留最后一个已知状态的副本)在 repo 中获取的远程分支。

在“Having a hard time understanding git-fetch”查看更多信息。

【讨论】:

    猜你喜欢
    • 2011-08-07
    • 2013-09-22
    • 2020-07-30
    • 2018-07-30
    • 2015-03-11
    • 2016-11-12
    • 2017-02-22
    • 1970-01-01
    相关资源
    最近更新 更多