Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在没有本地副本的远程存储库上发布git rev parse吗?_Git_Bitbucket_Git Pull - Fatal编程技术网

我可以在没有本地副本的远程存储库上发布git rev parse吗?

我可以在没有本地副本的远程存储库上发布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存储库位于加密卷内。我希望只有在远程设备有新提交时才能运行git pull--all。但是,我无法使用post接收钩子,因为我没有加密卷的密码。这意味着,即使钩子将被触发,我仍然不知道装载卷和获取新更改的密码。因此,我正在寻找其他替代方案,我考虑的一种可能的方法是向远程服务器请求最新版本的SHA,并将其与本地副本知道的最新版本的SHA进行比较,如果它们匹配,我不需要运行pull命令,如果它们不匹配,我需要运行git pull命令

有没有办法在远程存储库上运行
git rev parse master


你可以了解我的问题的更多背景信息

你不想退出的原因是什么?如果是因为拉取过程中涉及的合并,那么您可以始终发出
git fetch
来获取标题并保持工作副本不变,但实际上您无法做到这一点

有两个简单的近似值:

  • 如果您可以在远程设备上使用ssh(或其他访问器),那么您可以运行
    git rev parse
    ,甚至可以在那里运行
    git rev list
    ,从而获得所需数量的SHA-1
  • 您可以使用
    git ls remote
    从远程获取头部SHA-1(包括
    refs/heads/master
    )。所有这些都会告诉你是“相同”还是“不同”,假设你在本地拥有SHA-1头。如果它们是不同的,你不能确切地说出原因(尽管如果你走当地的速度,你可能会得到足够的信息)

不过,这个问题有点奇怪:你说本地回购在一个加密卷中,而你没有密码。如果是这样的话,你怎么知道当地的领导人是什么,和/或他们的历史?它们是在回购协议中记录的。

时间太长,请看一看,以了解整体情况。非常感谢您回答我的问题
gitlsremote
是我正在寻找的命令。比较
git ls remote
git rev parse master
的输出将告诉我本地回购是否更新。至于你的问题,你可能想看看。我不知道加密卷的密码,只有用户知道密码。所以他们也给了我,然后我可以挂载卷(并运行git命令)。那么,也许这不适用于这种情况:本地回购可能在远程回购之前,因此远程回购的获取或拉取没有任何效果;而且这两者可能会出现分歧,因此fetch带来了新的东西,但本地和远程仍然不同步。例如,假设本地和远程在(比如)badcafe同步,然后有人在本地执行一个git commit,创建rev
defaced
。版本号将不匹配,但没有要获取的内容;只有
push
可以使这些文件同步。在我的情况下,这不是问题,因为没有人编辑加密卷中的文件。偶尔,用户会要求系统从各种来源编译二进制文件。每个源都是加密卷内的本地git repo。大多数回购不需要更新,只有少数回购不需要运行
git pull--all
对于每个回购,我可以使用您的建议运行快速检查,并且只对需要更新的回购运行pull。由于没有人编辑本地存储库中的文件,我相信您的解决方案将非常有效。再次感谢:-)您还可以使用
ls-remote
检查远程设备上的标记/分支/提交,方法类似于
git-ls-remote[url][tag/branch/commit]
。这将输出给定标记、分支或提交的提交ID/散列(如果不存在,则无)。