我对git知之甚少,想请求帮助。
我有一个linux(-only)应用程序,它只能被下载" (即克隆)与git。在启动时,应用程序应该询问git"主服务器" (github)是否有更新。
git是否提供命令来检查是否有更新(没有真正更新 - 仅检查)?此外,我的应用程序可以读取该命令的返回值吗?
答案 0 :(得分:3)
如果您不想合并,则只能git fetch yourremote/yourbranch
,远程/分支规范通常为origin/master
。然后,您可以解析命令的输出以查看是否实际存在新提交。您可以将最新提取的提交引用为yourremote/yourbranch
,也可以引用为symref FETCH_HEAD
。
注意:我被提醒FETCH_HEAD
指的是最后一个分支。因此,一般情况下,您不能依赖git fetch yourremote
和FETCH_HEAD
,因为前者会抓取所有跟踪的分支,因此后者可能不会引用yourbranch
。此外,
话虽如此,这里有一些检查远程分支更新的选项,我们将用yourremote/yourbranch
表示:
0。在以下操作中处理错误:
0.1 如果您尝试git fetch yourremote
,git
会出现类似
conq: repository does not exist.
这可能意味着您没有定义远程字符串。使用git remote --verbose
检查您定义的远程字符串,然后根据需要检查git remote add yourremote yourremoteURI
。
0.2 如果git
给您一个类似
fatal: ambiguous argument 'yourremote/yourbranch': unknown revision or path not in the working tree.
这可能意味着您在本地没有yourremote/yourbranch
。我会把它留给更有见识的人来解释在本地远程拥有一些东西意味着什么:-)但是这里只会说你应该能够用
git fetch yourremote
之后您应该能够成功重复所需的命令。 (如果您已正确定义git remote yourremote
:请参阅上一项。)
1。如果您需要详细信息git show yourremote/yourbranch
并将其与当前git show yourbranch
进行比较
2。如果您只想查看差异,git diff yourbranch yourremote/yourbranch
3. 如果您希望仅对哈希进行比较,请将git rev-parse yourremote/yourbranch
与git rev-parse yourbranch
进行比较
4. 如果您想使用日志来回溯发生的事情,您可以执行类似git log --pretty=oneline yourremote/yourbranch...yourbranch
的操作(请注意使用三个点)。< / p>
答案 1 :(得分:3)
如果您确实不想实际使用带宽并获取新提交,只需检查是否有任何要提取的内容,您可以使用:
git fetch --dry-run [remote]
其中[remote]
默认为origin
。但是,你必须解析输出,看起来像这样:
From git://git.kernel.org/pub/scm/git/git
2e49dab..7f41b6b master -> origin/master
因此,获取所有内容(git fetch [remote]
)真的要容易得多,然后查看差异/日志,例如在master
和[remote]/master
之间。
答案 2 :(得分:1)
我会说git fetch是一个潜在的解决方案。它只更新索引,而不是工作代码。在大型提交集的情况下,这将涉及下载压缩文件/信息,因此它可能比您想要的更多,但它是您可以执行的最有用的下载。