【问题标题】:How to see a result of git fetch?如何查看 git fetch 的结果?
【发布时间】:2018-05-20 09:20:55
【问题描述】:

我从远程存储库中获取一个分支。我怎样才能看到它已经成功运行?我希望在此获取之后,我应该在本地拥有一个(副本)远程分支,但我找不到它(git branchgit branch -rgit status 都没有)。在我看来,好像什么都没发生。

【问题讨论】:

  • 如果没有输出对我来说意味着没有任何东西可以获取。没有新的分支,没有新的提交,等等。
  • 在我执行 fetch 命令时有一些输出:“* branch refs/changes/13/5857/2 -> FETCH_HEAD”。但除此之外,我不知道如何找到发生了什么变化。
  • 这是stackoverflow.com/questions/47674650/… 的后续吗?我关于不配置遥控器的事情结果是正确的吗? (如果是这样,这就是这个新问题的答案。)

标签: git git-fetch


【解决方案1】:

获取后,要查看远程“master”与本地“master”的比较,您要求 Git 准确地向您显示:

git log origin/master ^master

这意味着«所有可从“origin/master”访问的提交,不包括可从“master”访问的提交»或者,或者

git log master..origin/master

另外,git diff master origin/master 我认为似乎很简单地解决了这个问题。

【讨论】:

    【解决方案2】:

    我相信你打算做 GIT PULL,而不是 GIT FETCH。

    或者也许你打算做 GIT CLONE。

    GIT FETCH 不会更改您当前分支中的任何文件,它只会更新您的存储库。

    【讨论】:

      【解决方案3】:

      首先,为了确保得到输出,无论是在远程端实际找到新分支还是提交,您都可以进行详细获取:

      git fetch -v
      

      然后任何未更新的远程分支将在输出中显示为(例如)

      = [up to date]       my_awesome_branch      -> origin/my_awesome_branch
      = [up to date]       yet_another_branch     -> origin/yet_another_branch
      

      但除此之外,即使在成功获取并且现在在本地 repo 中有新的引用之后,请注意此时只有远程跟踪分支会更新以反映其对应部分的状态远端。

      但是,您的本地分支机构仍处于提取操作之前的状态。

      有了这个获取输出的例子:

      $ git fetch
      remote: Counting objects: 143, done.
      remote: Compressing objects: 100% (143/143), done.
      remote: Total 143 (delta 118), reused 0 (delta 0)
      Receiving objects: 100% (143/143), 16.54 KiB | 1.65 MiB/s, done.
      Resolving deltas: 100% (118/118), completed with 53 local objects.
      From ssh://<repoNameRedacted>
       * [new branch]          feature-2541 -> origin/feature-2541
         433c28824..9924cc527  bugfix-9891 -> origin/bugfix-9891
      

      如果你现在要处理 bugfix-9891 并获得最新的工作,那么

      git checkout bugfix-9891
      

      ...会将您的 HEAD 指向该本地分支,允许您对其进行处理,但您将没有拥有最近的提交,即使您事先获取了它们。他们在远程跟踪origin/bugfix-9891,但仍然不在你的本地版本bugfix-9891

      要真正合并这些更改并在它们之上工作,您必须

      git checkout bugfix/9891
      git merge origin/bugfix/9891
      

      我们还要注意,有一种非常常见的(尽管不是必需的)方法来自动化 [fetch + merge with remote] 过程,即:

      git checkout bugfix/9891
      git pull
      

      【讨论】:

        猜你喜欢
        • 2017-01-15
        • 2015-10-05
        • 2018-08-18
        • 1970-01-01
        • 2014-12-07
        • 2015-06-02
        • 1970-01-01
        • 2021-12-15
        相关资源
        最近更新 更多