【问题标题】:Detecting changes to remote branch检测远程分支的更改
【发布时间】:2013-02-27 17:41:47
【问题描述】:

我目前正在观察.git/refs/remotes/origin/master的变化

我的目标是检测远程 SHA 的更改,大概是因为有人提交了。为了获取最新的远程详细信息,我运行git fetch --quiet --update-head-ok remoteName。这似乎不是使用该命令更新的正确文件。

应该观察哪个目录/文件?

【问题讨论】:

    标签: git


    【解决方案1】:

    不要手动监视git 内部工作中的文件。使用git 为您检查。在这种情况下,git rev-parse --verify origin/master 将向您显示 origin/master 的本地副本的 SHA,git ls-remote origin master 从远程获取 SHA。

    我怀疑您遇到了文件.git/refs/remotes/origin/master 可能已过期的情况,因为许多不经常更改的引用实际上不再存储在单个文件中,而是存储在.git/packed_refs 中。如果两者都存在,git 知道该信任哪一个。

    【讨论】:

    • 我运行了git ls-remote origin master 命令。值是否保存到 FS(例如 .git/)。我问的原因是我想定期检查这个值,如果它改变了,做点什么。
    • 不,它们不会自动保存(git fetch 会保存它们,但也会检索所有内容)。不过,没有什么可以阻止您将输出保存到某个地方...
    • 这正是我所做的。我的脚本的要点是通过 ls-remote 检查 SHA1 中的更改,然后我需要确定如何更新 git 日志。将此标记为已回答。
    【解决方案2】:

    如果远程源上的主分支已更新,则该文件将包含新的提交哈希。不同的遥控器和不同的分支将具有预期的各自文件夹/文件位置。

    要查看记录更改的确切位置,请运行不带 --quit 参数的 fetch 命令。响应的最后一行(如果有任何要获取的内容)将告诉您下载的更改记录在哪里。

    比如这个page on 'GIT HowTo'举个例子

    $ git fetch
    From /Users/marina/Documents/Presentations/githowto/auto/hello
       6e6c76a..2faa4ea  master     -> origin/master
    

    最后一行表示远程主分支上的更改记录记录在origin/master——或者更具体地说,.git/refs/remotes/origin/master

    【讨论】:

      猜你喜欢
      • 2014-04-27
      • 1970-01-01
      • 2022-09-23
      • 2020-06-10
      • 2022-06-20
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2021-09-17
      相关资源
      最近更新 更多