【问题标题】:git fetch : output that there was an updategit fetch : 输出有更新
【发布时间】:2017-06-19 10:04:07
【问题描述】:

在更新的情况下,fetch 的预期行为如下(恕我直言):

$ git fetch -p
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From AAA
   a061e40..2058467  develop    -> origin/develop

这在项目 A 中对我有用。从同一个 git 主机、同一个本地系统、不同的项目(比如项目 B)获取,git fetch 没有给我任何输出。我认为它在某个时间点发生了变化,但我无法弄清楚原因是什么。

项目 B,git fetch 输出:

$ git checkout develop
Switched to branch 'develop'
Your branch is up-to-date with 'origin/develop'.
$ git fetch -pv
From BBB
 = [up to date]      develop                       -> origin/develop
$ git status
On branch develop
Your branch is behind 'origin/develop' by 2 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

项目 A 配置:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    precomposeunicode = true
[remote "origin"]
    url = AAA
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "develop"]
    remote = origin
    merge = refs/heads/develop

$ git branch -vv
* develop    a061e40 [origin/develop: behind 1]

项目 B 配置:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    precomposeunicode = true
[remote "origin"]
    url = BBB
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "develop"]
    remote = origin
    merge = refs/heads/develop

$ git branch -vv
* develop                       7d1afd6 [origin/develop: behind 2]

如何将项目 B 中 git fetch 的行为改回它在项目 A 中的行为?

【问题讨论】:

    标签: git version-control git-fetch


    【解决方案1】:

    您可以使用 .git\refs\remotes\origin\develop 检查您当前的开发分支提交 ID。

    如果两个提交是相同的,这意味着你的本地开发分支确实是最新的。

    如果两个提交不同,可以使用git log --oneline --decorate --graph --all 来检查develop 和origin/develop 是否指向相同的提交ID。或者您可以使用git branch -D develop 和git checkout develop,然后在远程仓库上进行更改,然后再次执行git fetch。

    【讨论】:

    • 抱歉这么晚才回来,它有点被优先级推迟了。删除本地 develop 分支并再次检查它可以解决问题。感谢您的建议!不过,我仍然不知道问题出在哪里。
    • 如果现在可以正常工作,主要是你之前不小心从远程获取的。
    • “意外获取”?你这是什么意思?
    • 可能在您使用git fetch -p 并显示up to date 之前,它已在本地获取。
    猜你喜欢
    • 2019-06-23
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2020-12-18
    • 2014-03-31
    相关资源
    最近更新 更多