【问题标题】:Error in git book or I misunderstood?git book 中的错误还是我误解了?
【发布时间】:2013-06-17 17:36:03
【问题描述】:

Here你可以阅读:

跟踪分支从远程分支检出本地分支 自动创建所谓的跟踪分支。追踪 分支机构是与某个机构有直接关系的本地分支机构 远程分支。如果您在跟踪分支上并键入 git push,Git 自动知道要推送到哪个服务器和分支。还有,跑步 git pull while 在这些分支之一上获取所有远程 引用然后自动合并到对应的远程 分支

不应该在相应的远程分支中合并而不是在相应的本地分支中合并

【问题讨论】:

    标签: git branching-and-merging git-pull remote-branch


    【解决方案1】:

    TL;DR:

    此外,在这些分支之一上运行 git pull 会获取所有远程引用,然后自动合并到相应的远程分支中。

    应该是这样的:

    git pull 将更新一个“远程跟踪分支”,并将这些更新合并到一个本地分支中,跟踪该远程跟踪分支。

    有关所有这些不同“跟踪”元素的解释,请参阅下一节。


    请注意,“轨道”一词是 git 中最令人困惑的部分之一,来自 Mark Longair 博客文章“The most confusing git terminology”。

    “跟踪”和“跟踪”

    1/ “跟踪”与“未跟踪的文件”一样

    说一个文件在存储库中被跟踪似乎意味着它要么存在于索引中,要么存在于 HEAD 指向的提交中。
    您最常在“git status”的输出中看到这种用法,其中将列出“untracked files”:

    # On branch master
    # Untracked files:
    
    1. track”如“remote-tracking branch

    作为背景知识,您可以将远程跟踪分支视为远程存储库中分支状态的本地缓存。
    最常见的例子是origin/master,或者,完整地命名该引用,refs/remotes/origin/master
    此类分支通常由git fetch 更新。

    短语“remote-tracking branch”中的“track”的意思是表示,remote-tracking分支正在跟踪remote-tracking分支上次更新时远程仓库中分支的状态。
    所以,你可能会说refs/remotes/origin/master 正在跟踪origin 中分支master 的状态。

    这里的“跟踪”由配置变量remote.<remote-name>.fetch中的refspec和配置变量remote.<remote-name>.url中的URL定义。

    1. “跟踪”如“git branch –track foo origin/bar”或:“分支foo 设置为跟踪来自origin 的远程分支bar

    同样,如果您想在远程存储库的分支上做一些工作,但又希望将您的工作与存储库中的其他所有内容分开,您通常会使用如下命令(或其中一个“按我的意思做”等价物):

    git checkout --track -b foo origin/bar
    

    命令和输出中“跟踪”的含义与之前的含义不同——这意味着已设置配置选项,将您的新本地分支与远程存储库中的另一个分支相关联。
    文档有时将这种关系称为在origin 中将bar 称为foo 中的“upstream”。
    这个“upstream”关联非常有用,其实:

    • 它启用了一些不错的功能,例如在分支 foo 上时只需键入 git pull 即可从 origin 获取,然后从 origin/bar 合并。
    • 这也是您获取有关您的分支相对于远程跟踪分支的状态的有用消息的方式,例如“Your branch foo is 24 commits ahead of origin/bar and can be fast-forwarded”。

    此处的跟踪由配置变量branch.<branch-name>.remotebranch.<branch-name>.merge 定义。

    【讨论】:

    • 感谢您的解释。 The book 可能会导致混淆,因为我认为这是一个没有那么明确的定义。它将您的 remote-tracking 分支 命名为 remote branch 并将您的 bar in origin upstream of foo 概念命名为 tracking branch .
    • @gsc-frank 我同意,这是 Mark Longair 博客文章“跟踪”部分的来源。在这里,一个跟踪分支正在跟踪一个远程跟踪分支。这意味着具有关联上游分支的本地分支正在跟踪所述上游分支,它本身也在跟踪上游 repo 的分支!
    【解决方案2】:

    你把这里的斜体弄错了。动词是“merges in”,强调in。您将其读作“合并到”。相反,将其读作“从相应的远程分支合并”。

    【讨论】:

    • 斜体固定。在我看来可能是:将相应的远程分支合并到本地跟踪分支中,对吗?我只是说要确认我理解的不仅仅是提议文本更改;)感谢您的回复。
    【解决方案3】:

    如果你说的是最后一句话,我相信这是正确的。

    对于推送:
    对应的本地分支推送到远程分支。

    获取:
    对应的远程分支推送到本地分支。

    这就是我的解释。

    【讨论】:

      猜你喜欢
      • 2011-01-11
      • 2013-09-06
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      相关资源
      最近更新 更多