Git拉不更新,repo不一致?

时间:2011-01-03 13:17:37

标签: apache git git-pull dav

我在apache2上使用DAV配置的git有一个奇怪的问题。

如果需要,我会提供更多详细信息,但这里是对问题的高级概述。

我有一个存储库的3个克隆:

  1. 裸露的人从
  2. 推拉
  3. 机器A上的一个
  4. 机器B上的一个
  5. 我在机器A上做了最后一次更改,我推动了所有更改,并对两者进行了拉动。问题是,由于某些原因,我在拉动机器B后没有看到我的最后一次更改。

    在任何一台机器上都没有关于遥控器的信息。

    奇怪的部分是:

    • 如果我在裸存储库上执行“git log”,则机器A的最后更改将在那里
    • 如果我再次浏览裸存储库,那么更改将不会存在。它只能由机器B看到的最后一次更改。

    这是服务器配置问题还是git问题?我已经有好几个月的问题。

    git branch -a打印:

    机器A:

    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/master
    

    机器B:

    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/master
    

    .git/config两者:

    [core]
      repositoryformatversion = 0
      filemode = false
      bare = false
      logallrefupdates = true
    [branch "master"]
      remote = origin
      merge = refs/heads/master
    [remote "origin"]
      url = http://<url>/p/home.git
      fetch = +refs/heads/*:refs/remotes/origin/*
    

1 个答案:

答案 0 :(得分:3)

既然你已经在评论中确认了我的猜测是正确的,我会将其添加为答案:)听起来问题就是这个git FAQ中描述的问题:

https://git.wiki.kernel.org/index.php/GitFaq#My_HTTP_repository_has_updates.2C_which_.27git_clone.27_misses._What_happened.3F

在.git / hooks /中有一个名为post-update.sample的示例挂钩,您可以将其重命名为post-update,以便在推送后自动运行git update-server-info。这会生成哑巴HTTP传输所需的信息。