如何让git检查主服务器上的更新?

时间:2011-10-08 11:37:29

标签: linux git

我对git知之甚少,想请求帮助。

我有一个linux(-only)应用程序,它只能被下载" (即克隆)与git。在启动时,应用程序应该询问git"主服务器" (github)是否有更新。

git是否提供命令来检查是否有更新(没有真正更新 - 仅检查)?此外,我的应用程序可以读取该命令的返回值吗?

3 个答案:

答案 0 :(得分:3)

如果您不想合并,则只能git fetch yourremote/yourbranch,远程/分支规范通常为origin/master。然后,您可以解析命令的输出以查看是否实际存在新提交。您可以将最新提取的提交引用为yourremote/yourbranch,也可以引用为symref FETCH_HEAD

注意:我被提醒FETCH_HEAD指的是最后一个分支。因此,一般情况下,您不能依赖git fetch yourremoteFETCH_HEAD,因为前者会抓取所有跟踪的分支,因此后者可能不会引用yourbranch。此外,

  • 你最终得到的不仅仅是必要的。
  • 还可以参考Jefromi's answer查看但未实际下载的更改
  • 以下不一定是最紧凑的格式,只是可读的例子。

话虽如此,这里有一些检查远程分支更新的选项,我们将用yourremote/yourbranch表示:

0。在以下操作中处理错误:

0.1 如果您尝试git fetch yourremotegit会出现类似

的错误
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/yourbranchgit 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是一个潜在的解决方案。它只更新索引,而不是工作代码。在大型提交集的情况下,这将涉及下载压缩文件/信息,因此它可能比您想要的更多,但它是您可以执行的最有用的下载。