“自动移动”对“远程分支”意味着什么?

时间:2019-03-21 07:48:03

标签: git

https://git-scm.com/book/en/v1/Git-Branching-Remote-Branches 我发现了

  

远程分支是对远程存储库上分支状态的引用。它们是您无法移动的本地分支机构;只要您进行任何网络通信,它们都会自动移动。远程分支充当书签,以提醒您远程存储库上的分支是您上次连接它们的位置。   ...   要同步工作,请运行git fetch origin命令。此命令查找哪个服务器起源(在本例中为git.ourcompany.com),从中获取您尚不具备的任何数据,并更新本地数据库,将起源/主指针移至新的数据库,保持最新状态(见图3-24)。

让我感到困惑的是: 为

  

只要您进行任何网络通信,它们都会自动移动。

为什么我们需要git fetch手动进行同步?

此外,我们是否应该在此处用“远程跟踪分支”替换“远程分支”? 因为“远程分支”通常是指远程计算机上的分支。

2 个答案:

答案 0 :(得分:0)

  

只要您进行任何网络通信,它们都会自动移动。

这意味着当您执行git fetchpull(因为pull包含访存)来表示远程分支的状态时,它们会更新。

例如当我执行git fetch时,所有远程分支都将更新,以反映远程存储库本地分支的状态。

   Remote Repository                     |     Local Repository
                                         |     
                                         |      refs/heads/master
   A -- B -- C                           |          |
             ^                           |          V
             |                           |     A -- B
           refs/heads/master             |          ^
                                         |          |
                                         |        refs/remotes/origin/master

如果您现在执行git fetch,则本地存储库的远程目录将被更新。

   Remote Repository                     |     Local Repository
                                         |     
                                         |      refs/heads/master
   A -- B -- C                           |          |
             ^                           |          V
             |                           |     A -- B -- C
           refs/heads/master             |               ^
                                         |               |
                                         |        refs/remotes/origin/master

因此,您永远不会手动更新远程分支。 they’re moved automatically whenever you do any network communication.

答案 1 :(得分:0)

  

只要您进行任何网络通信,它们都会自动移动。

我猜这是在谈论Git中的 HEAD pointer ,它确定了当前的工作版本(因此文件将被放置在项目的工作目录中)。通常,当您要签出分支(远程)时,在创建新提交时表示 Git will move the HEAD pointer automatically