git书中的错误还是我被误解了?

时间:2013-06-17 17:36:04

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

Here你可以阅读:

  

跟踪分支从远程分支检出本地分支   自动创建所谓的跟踪分支。跟踪   分支是与a有直接关系的本地分支   远程分支。如果你在跟踪分支上并输入git push,Git   自动知道要推送到哪个服务器和分支。另外,跑步   git pull在其中一个分支上取出所有遥控器   引用然后自动合并到相应的遥控器中   分支

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

3 个答案:

答案 0 :(得分:2)

你在这里弄错了斜体。动词是“合并”,重点是 in 。你把它读成“合并成”。相反,将其读作“从相应的远程分支合并”。

答案 1 :(得分:2)

TL; DR:

  

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

那应该是:

git pull将更新“远程跟踪分支”,并在跟踪所述远程跟踪分支的本地分支中合并这些更新。

有关所有不同“跟踪”元素的说明,请参阅下一节。


请注意,来自Mark Longair博客文章“The most confusing git terminology”的术语“跟踪”是git中最令人困惑的一部分。

“跟踪”和“跟踪”

  

1 /“track”,如“未跟踪文件”

     

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

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

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

  

短语“远程跟踪分支”中的“跟踪”意味着远程跟踪分支正在跟踪上次远程跟踪分支更新时远程存储库中分支的状态。 />   因此,您可以说refs/remotes/origin/master正在跟踪master中分支origin的状态。

     

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

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

    同样,如果您想在远程存储库的分支上执行某些操作,但希望将您的工作与存储库中的其他所有内容分开,则通常会使用如下命令(或其中一个) “尽我所能”等同于:

git checkout --track -b foo origin/bar
  

命令和输出中的“跟踪”意义与先前的意义不同 - 这意味着已设置配置选项,将新的本地分支与远程存储库中的另一个分支相关联。   文档有时会将此关系称为bar originfoogit pull中的foo。   事实上,这个“upstream”关联非常有用:

     
      
  • 它启用了很好的功能,例如,当您在分支origin上时,只需键入origin/bar即可从Your branch foo is 24 commits ahead of origin/bar and can be fast-forwarded获取然后从branch.<branch-name>.remote合并。
  •   
  • 这也是您如何获得有关您的分支相对于远程跟踪分支的状态的有用消息,例如“branch.<branch-name>.merge”。
  •   
     

此处的跟踪由配置变量{{1}}和{{1}}定义。

答案 2 :(得分:0)

如果你在谈论最后一句话,我认为这是正确的。

推动:
相应的本地分支推送到远程分支。

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

我就是这样解释的。