拉同一个分支时没有看到同事git发生变化?

拉同一个分支时没有看到同事git发生变化?,git,Git,我根据另一个分支(起源/发展)创建了一个分支(新分支)。我做了些工作,把树枝推到了遥控器上。我的同事拆下了新的分支,做了一些更改,然后将这些更改推到远程。所以我们在同一个分支上工作,我的代码在本地缺少他的更改 在本地运行git pull时,它不会检索同事的更改。我想是因为我当地的分公司仍在追踪起源/发展?如何在本地保留分支并检索其更改?首先,检查您的本地分支新分支是否与远程分支源/新分支匹配: # this will show the head commit of your local bran

我根据另一个分支(起源/发展)创建了一个分支(新分支)。我做了些工作,把树枝推到了遥控器上。我的同事拆下了新的分支,做了一些更改,然后将这些更改推到远程。所以我们在同一个分支上工作,我的代码在本地缺少他的更改


在本地运行git pull时,它不会检索同事的更改。我想是因为我当地的分公司仍在追踪起源/发展?如何在本地保留分支并检索其更改?

首先,检查您的本地分支<代码>新分支是否与远程分支<代码>源/新分支匹配:

# this will show the head commit of your local branch :
git log -1 new-branch

# does this command display something at all ?
# does it match the content your coworker pushed ?
git log -1 origin/new-branch
  • 如果第二个命令没有显示您同事的工作:
    有些事情没有被提交或从你同事的工作站推出来,检查他的回购协议副本

  • 如果第二个命令确实显示了同事的工作:
    这只是将本地分支链接到远程分支的问题

    运行:


首先,检查您的本地分支<代码>新分支是否与远程分支<代码>源/新分支匹配:

# this will show the head commit of your local branch :
git log -1 new-branch

# does this command display something at all ?
# does it match the content your coworker pushed ?
git log -1 origin/new-branch
  • 如果第二个命令没有显示您同事的工作:
    有些事情没有被提交或从你同事的工作站推出来,检查他的回购协议副本

  • 如果第二个命令确实显示了同事的工作:
    这只是将本地分支链接到远程分支的问题

    运行:


请尝试
git拉原点新分支
请尝试
git拉原点新分支

我想是因为我当地的分公司仍在追踪起源/发展

您目前是否在
原始/开发
新分支机构

如果启用
origin/Development
签出新分支机构

  • git签出新分行
  • git拉起点新分支
我想是因为我当地的分公司仍在追踪起源/发展

您目前是否在
原始/开发
新分支机构

如果启用
origin/Development
签出新分支机构

  • git签出新分行
  • git拉起点新分支
TL;博士 您可能需要设置分支的上游。有很多方法可以做到这一点,但在此阶段,最直接的方法是使用:

git branch --set-upstream-to=origin/new-branch new-branch
之后,你所使用的所有快捷方式都会起作用

朗:这些捷径是什么 要真正理解这一点,您需要知道:

  • Git分支名称的真正含义和作用(这并不重要,但它的作用对人类非常重要)
  • 什么是远程跟踪名称
  • 分支的上游是什么;及
  • git pull的工作原理
分支名称和远程跟踪名称 首先,关于分支机构,这里有几点需要记住:

  • Git根本不是关于分支的。这真的是关于承诺。提交实际上不是按分支命名的。它们实际上是由散列ID命名的。每个Git everywhere都同意任何一个特定的提交都有该散列ID,并且没有其他提交可以使用该散列ID。但是散列ID看起来是随机的,人类无法记住,所以

  • 分支名称主要用于查找提交。这意味着我们人类非常依赖这些名字。每个分支名称只包含一个哈希ID。根据定义,该哈希ID是分支中最后一次提交的哈希ID

  • 您自己的Git有自己的分支名称,独立于其他任何人的分支名称。但是由于这些名称对我们很有用,您的Git还将创建远程跟踪名称,如
    origin/master
    ,以记住您的Git在另一个Git(位于
    origin
    )的
    master
    中看到的内容。只要Git有机会,Git就会更新这些远程跟踪名称

例如,考虑运行<代码> git取原点< /代码>。这使您的Git调用他们的Git,使用短名称

origin
查找URL(他们Git的“电话号码”)。他们的Git将列出部分或全部分支名称,以及与这些名称一起使用的提交哈希ID。如果您还没有这些提交,您的Git将获得这些提交,如果您还没有这些提交,您的Git将获得与这些提交相关的任何其他提交。因此,如果您限制了
git fetch
,并且您的git知道git的分支名称标识了哪个提交,那么现在您就拥有了它们的所有提交,或者您正在获取的特定分支所需的所有提交。因此,您的Git现在会更新您的远程跟踪名称您的
源站/master
等等,以便您能够记住它们的提交

还要记住,每个提交(由其唯一的哈希ID命名)本身也有一些哈希ID。大多数提交都有一个哈希ID:这是此提交的父提交。这些父ID表单提交到向后指向的链中。这就是为什么只记住最后一个散列ID是可以的。给定一个分支名称,如
master
,Git会找到链中的最后一个提交,即分支的尖端。该提交会记住下一个较早的提交。下一个更早的提交会记住另一个更早的提交,提示提交的祖父母会记住另一个更早的提交,依此类推

git pull
git pull所做的一切就是为您运行两个git命令:

  • 首先,它运行
    git fetch
    。这就是实际获得新提交的内容。提取步骤还将根据需要更新远程跟踪名称

    您拾取的新提交(如果有的话)根本不会影响任何分支名称

  • 然后,它运行第二个Git命令。第二个命令,,
    git pull origin new-branch
    
    git pull