【发布时间】:2013-02-27 17:41:47
【问题描述】:
我目前正在观察.git/refs/remotes/origin/master的变化
我的目标是检测远程 SHA 的更改,大概是因为有人提交了。为了获取最新的远程详细信息,我运行git fetch --quiet --update-head-ok remoteName。这似乎不是使用该命令更新的正确文件。
应该观察哪个目录/文件?
【问题讨论】:
标签: git
我目前正在观察.git/refs/remotes/origin/master的变化
我的目标是检测远程 SHA 的更改,大概是因为有人提交了。为了获取最新的远程详细信息,我运行git fetch --quiet --update-head-ok remoteName。这似乎不是使用该命令更新的正确文件。
应该观察哪个目录/文件?
【问题讨论】:
标签: git
不要手动监视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 会保存它们,但也会检索所有内容)。不过,没有什么可以阻止您将输出保存到某个地方...
如果远程源上的主分支已更新,则该文件将包含新的提交哈希。不同的遥控器和不同的分支将具有预期的各自文件夹/文件位置。
要查看记录更改的确切位置,请运行不带 --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。
【讨论】: