有没有办法检查远程 git repo 是不是有更改,而无需实际获取更改?

Posted

技术标签:

【中文标题】有没有办法检查远程 git repo 是不是有更改,而无需实际获取更改?【英文标题】:Is there a way to check if a remote git repo has changes, without actually getting the changes?有没有办法检查远程 git repo 是否有更改,而无需实际获取更改? 【发布时间】:2020-08-29 17:54:56 【问题描述】:

我想编写一个快速脚本来检查远程存储库与本地存储库相比是否有更改,然后拉取所有分支的所有更改(如果有)。

有没有一种方法可以做到这一点,而无需首先拉动所有更改?

我在 git remote update 周围看到的所有内容,实际上都是下载内容等,而且对于许多 repos 来说速度很慢。

将此视为一种试运行:经常为许多存储库运行此脚本,然后运行另一个脚本以根据第一个脚本的报告实际更新本地存储库。

【问题讨论】:

如果有任何更改你要做的事情就是拉取它们,为什么你要检查更改而不拉任何东西。 这能回答你的问题吗? How to preview git-pull without doing fetch? @jonrsharpe 它做的第一件事是 git fetch,它仍然是一个完整的下载 :( 关于原因,这是因为我想知道那些许多 repos 的变化,有时是更新将是手动的,有时现在不会完成,有时会通过第二个繁重的脚本完成。无论如何,用例是有效的,我想知道这可能吗? git ls-remote https://github.com/githubtraining/hellogitworld.git 怎么样?这应该只获取提交哈希列表。 @Robert, git ls-remote 似乎是我想要的。如果您将其添加为答案,我会将其标记为正确。谢谢?????? 【参考方案1】:

见thisSO。

TLDR

git remote update
git status -uno

git fetch --dry-run

【讨论】:

【参考方案2】:

从技术上讲,没有办法只查找更改而不将它们下载到本地副本,但是,您会找到最接近的命令是 git fetch。从技术上讲,它会从远程存储库下载更改,但不会将它们应用于您的工作分支,只会更新本地参考中的远程分支。

更多信息在这里:https://git-scm.com/docs/git-fetch

【讨论】:

嗯...从技术上讲,有。我想知道有更改(应该是轻量级的),而不是获取更改(这可能意味着通过慢速网络连接下载了十亿个文件)。 【参考方案3】:

如果您只想查看远程存储库的更改列表而不与本地存储库进行比较,您可以使用 git 的ls-remote 命令:

git ls-remote https://github.com/githubtraining/hellogitworld.git 

它显示以 HEAD 开头的远程存储库的提交哈希列表:

git ls-remote https://github.com/githubtraining/hellogitworld.git
ef7bebf8bdb1919d947afe46ab4b2fb4278039b3        HEAD
a9095e79eaafd9f11a9d12e5a1ae125fde81a5eb        refs/heads/bisect
26479b0b606bc322e0b53226e44f343614bf06b6        refs/heads/fbaddfiles
c975e0e9a00f5f902877b0830a52010691586266        refs/heads/fbmaster
e650f374002f860d56ecad63b6fab7387a607642        refs/heads/feature_division
57d0bf61e57cdacb309ebd1075257c6bd7e1da81        refs/heads/feature_division_polished
7c0ffa9d88616972bb84befbec40a2212478149e        refs/heads/feature_image
3c9306fcc7c41a88a37514a1f4c8d43459eaf966        refs/heads/feature_subtraction
818f033c4ae7f26b2b29e904942fa79a5ccaadd0        refs/heads/feature_subtraction_polished
....

【讨论】:

以上是关于有没有办法检查远程 git repo 是不是有更改,而无需实际获取更改?的主要内容,如果未能解决你的问题,请参考以下文章

检查 Git 中是不是需要拉取

未指定凭据从远程 Git 获取更改

Git没有编辑远程存储库的访问权限

在克隆之前更改 SSH 远程上的 Git 分支

在詹金斯作业中使用 git repo 名称作为 ENV 变量

如何检查远程 git 存储库的配置?