什么是本地分支,远程跟踪本地分支,远程分支

时间:2014-03-11 08:21:52

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

我最近开始与Git合作。通常我使用eclipse Egit,很少使用git shell。在经历了很多关于Git及其分支的材料后,我仍然对此感到困惑。

我知道在同一主题上有关于Stack Overflow的n个问题,但到目前为止,我只是增加了我的困惑,或者我已经获得了关于分支的一半知识。所以我就这个理解提出了第一个问题。

有人可以确认我的理解是否正确:

  1. 有两种类型的分支:本地和远程,其中本地分支是本地存储库上的分支,远程分支位于远程存储库
  2. 有第三种类型的分支称为远程跟踪分支,当我们从远程分支获取更改时,它会自动调整其头部以与其跟踪的分支匹配。
  3. 因此,分支只能跟踪某个远程分支,而不能跟踪任何本地分支。这是对的吗?
  4. 当我克隆远程存储库时,会自动创建两种类型的分支,如下所示:
    1. 本地分支称为主。
    2. 跟踪远程存储库主分支的本地远程跟踪分支。
  5. 我的本地主分支(上面4.1中提到)可以跟踪在本地创建的远程跟踪分支(在4.2中提到)吗?
  6. 如果是,我想它会自动设置为跟踪此分支,这就是为什么我不需要做任何特殊的事情来从我的工作目录中获取/推送对远程存储库的更改吧?因此,当我使用Eclipse的Team同步获取更改时,会发生以下事情
    1. 远程分支的更改来自本地远程跟踪分支(4.2)
    2. 由于我的本地主分支(4.1)设置为跟踪远程跟踪brnach(4.2),它们来自我的本地主分支(4.1)。
    3. 从我的主分支他们进入工作目录吗?
  7. 当我尝试推动更改时,相反的情况正好相反?

2 个答案:

答案 0 :(得分:0)

  1. 假。远程跟踪分支只是本地分支。当你从远程仓库取货时,他们肯定不会调整自己。如初。
  2. 否。没有本地主人和单独的远程跟踪本地主人这样的东西。只能有一个本地主人。
  3. 没有任何意义
  4. 没有任何意义
  5. 本地分支的远程跟踪仅影响pullpush操作。但不是fetch。它允许您在键入这些命令时省略一些参数。

    例如,本地主站是远程跟踪源/主站。要将新的提交从origin / master提取到本地master,您必须确保检出本地master,然后:

    git pull origin master
    

    但是由于主人是远程跟踪起源/主人,所以足以说:

    git pull
    

    因此远程跟踪主要是语法糖。

答案 1 :(得分:0)

(对于未来的读者)

我同意1至4号问题的作者的假设。 但是(5)master在获取时无法跟踪origin / master。

当获取(6)时,只更新origin / master,因此它正在跟踪远程分支(6.1。是真的)。

然而,对于本地主人和工作主,你必须合并或改组(更好的是第二个)(6.2和6.3。是假的)。

同样,对于push,您可以将master放在原点(远程存储库的名称)。您的本地仓库是指您的工作目录的更改已被提交,因此您的工作目录不会自动推送,是您当地的仓库。