代码之家  ›  专栏  ›  技术社区  ›  hotmeatballsoup

对于本地git分支机构来说,与origin保持同步意味着什么?

git
  •  1
  • hotmeatballsoup  · 技术社区  · 6 年前

    在本地回购的根目录中,我从功能分支切换回 develop :

    $ git checkout develop
    Switched to branch 'develop'
    Your branch is up to date with 'origin/develop'.
    

    请注意最后一条信息: 您的分支机构更新了“起源/发展” . 对我来说,这意味着我的分支完全赶上了 HEAD 属于 origin/develop 而且没有什么新的变化。

    但当我这么做的时候。。。

    $ git pull
    remote: Counting objects: 10, done.
    Unpacking objects: 100% (10/10), done.
    From ssh://my-code-commit/v1/repos/myproj
       5840bf6..cc91737  develop    -> origin/develop
    Updating 5840bf6..cc91737
    Fast-forward
     src/main/java/com/me/myapp/processor/Fizzbuzz.java      |  39 +++++++++++++++++++++++++++++++++++++++
     src/main/java/com/me/myapp/processor/Foobar.java       |   6 ++----
     src/main/resources/META-INF/spring/routes/FlimFlam.xml |  21 +++++++++++++++++++++
    

    什么?!怎么会这样?!如果我的本地服务器 发展 是“最新的 起源/发展 "?!

    这是一个误导性的信息还是我根本误解了git说我是最新的?

    2 回复  |  直到 6 年前
        1
  •  4
  •   poke    6 年前

    通常,您必须考虑三种不同的分支:

    • 远程分支 在本地存储库中
    • A 地方分行

    git branch foo git checkout -b foo 地方的 分支机构。当地分支机构最容易理解。

    master 分支,则该远程存储库具有 主人

    当您将存储库作为远程存储库添加到本地存储库时,Git将使用 表示远程存储库所处的状态。当你跑的时候 git fetch ,Git将从远程获取分支信息并更新其 . 远程分支就是这种模式 <remote-name>/<branch-name> .

    如果远程存储库 origin 在当地有分公司 主人 ,则在获取该远程存储时,本地存储库将创建一个 远程分支 origin/master . 该远程分支存在于本地存储库中,并表示 主人 远程分支。

    现在,当你也有一个当地的分支机构 轨道 远程分支。这意味着你将 主人 原点/主

    然而,重要的是要记住,Git是一个分布式版本控制系统,几乎所有的东西都在本地执行,它只会查看 远程分支 在检查你当地分支机构的状态时。它不会自动连接到远程存储库以检查其分支的本地状态。

    所以当Git说 您的分支机构是最新的“来源/主” 那么它的意思是 本地分支和本地存在的远程分支当前指向同一提交,但远程分支可能已过时 . 要解决这个问题,你必须先跑 git获取 更新本地存储库中的远程分支,以便它们反映远程存储库的新的当前状态。

        2
  •  0
  •   Mauricio Machado    6 年前

    git pull 实际上意味着 git fetch && git merge [upstream] 5840bf6 作为头。这通常发生在您签出到与另一个源分支匹配的分支时。

    所以,当你 pull cc91737 .

    热释光;博士:“你的分支机构是最新的'起源/发展'。”实际上意味着“你的分支机构是最新的'起源/发展'。。。 就我所知