我可以在没有本地副本的远程存储库上发布git rev parse吗?
我的本地git存储库位于加密卷内。我希望只有在远程设备有新提交时才能运行git pull--all。但是,我无法使用post接收钩子,因为我没有加密卷的密码。这意味着,即使钩子将被触发,我仍然不知道装载卷和获取新更改的密码。因此,我正在寻找其他替代方案,我考虑的一种可能的方法是向远程服务器请求最新版本的SHA,并将其与本地副本知道的最新版本的SHA进行比较,如果它们匹配,我不需要运行pull命令,如果它们不匹配,我需要运行git pull命令 有没有办法在远程存储库上运行我可以在没有本地副本的远程存储库上发布git rev parse吗?,git,bitbucket,git-pull,Git,Bitbucket,Git Pull,我的本地git存储库位于加密卷内。我希望只有在远程设备有新提交时才能运行git pull--all。但是,我无法使用post接收钩子,因为我没有加密卷的密码。这意味着,即使钩子将被触发,我仍然不知道装载卷和获取新更改的密码。因此,我正在寻找其他替代方案,我考虑的一种可能的方法是向远程服务器请求最新版本的SHA,并将其与本地副本知道的最新版本的SHA进行比较,如果它们匹配,我不需要运行pull命令,如果它们不匹配,我需要运行git pull命令 有没有办法在远程存储库上运行git rev pars
git rev parse master
你可以了解我的问题的更多背景信息你不想退出的原因是什么?如果是因为拉取过程中涉及的合并,那么您可以始终发出
git fetch
来获取标题并保持工作副本不变,但实际上您无法做到这一点
有两个简单的近似值:
- 如果您可以在远程设备上使用ssh(或其他访问器),那么您可以运行
,甚至可以在那里运行git rev parse
,从而获得所需数量的SHA-1git rev list
- 您可以使用
从远程获取头部SHA-1(包括git ls remote
)。所有这些都会告诉你是“相同”还是“不同”,假设你在本地拥有SHA-1头。如果它们是不同的,你不能确切地说出原因(尽管如果你走当地的速度,你可能会得到足够的信息)refs/heads/master
不过,这个问题有点奇怪:你说本地回购在一个加密卷中,而你没有密码。如果是这样的话,你怎么知道当地的领导人是什么,和/或他们的历史?它们是在回购协议中记录的。时间太长,请看一看,以了解整体情况。非常感谢您回答我的问题
gitlsremote
是我正在寻找的命令。比较git ls remote
和git rev parse master
的输出将告诉我本地回购是否更新。至于你的问题,你可能想看看。我不知道加密卷的密码,只有用户知道密码。所以他们也给了我,然后我可以挂载卷(并运行git命令)。那么,也许这不适用于这种情况:本地回购可能在远程回购之前,因此远程回购的获取或拉取没有任何效果;而且这两者可能会出现分歧,因此fetch带来了新的东西,但本地和远程仍然不同步。例如,假设本地和远程在(比如)badcafe同步,然后有人在本地执行一个git commit,创建revdefaced
。版本号将不匹配,但没有要获取的内容;只有push
可以使这些文件同步。在我的情况下,这不是问题,因为没有人编辑加密卷中的文件。偶尔,用户会要求系统从各种来源编译二进制文件。每个源都是加密卷内的本地git repo。大多数回购不需要更新,只有少数回购不需要运行git pull--all
对于每个回购,我可以使用您的建议运行快速检查,并且只对需要更新的回购运行pull。由于没有人编辑本地存储库中的文件,我相信您的解决方案将非常有效。再次感谢:-)您还可以使用ls-remote
检查远程设备上的标记/分支/提交,方法类似于git-ls-remote[url][tag/branch/commit]
。这将输出给定标记、分支或提交的提交ID/散列(如果不存在,则无)。