繁体   English   中英

如何为远程标签执行 `git log` 或 `git describe`?

[英]How to do `git log` or `git describe` for remote tags?

我可以为本地分支和标签执行此操作:

git log some-branch
git describe some-branch
git log some-tag
git describe some-tag

但我不知道如何对远程标签做同样的事情。 它适用于分支:

git log origin/some-branch
git describe origin/some-branch

所以通过类比,我正在尝试这个:

$ git log origin/some-tag

fatal: ambiguous argument 'origin/some-tag': unknown revision or path not in the working tree.

$ git describe origin/some-tag

fatal: Not a valid object name origin/some-tag

我也尝试用origin/refs/tags替换origin ,但这也不起作用。 有没有办法让它工作?

我想避免在本地检查标签,因为我正在创建一个自动化工具,它会创建很多自己的分支,所以它会变得混乱,或者在完成后需要清理,如果出现问题,可能无法运行,所以我试图避免额外的复杂性。 似乎它应该类似于git log origin/... ,我只是不知道如何实现。

您不能直接与远程分支或标签进行交互。 您必须先获取它们。

除了分支和标签,git 还有其他几种类型的参考。 其中之一是“远程跟踪参考”。 在正常配置中,每次从远程获取时都会更新这些信息,以显示当时远程分支指向的位置。 当您说git log origin/branch时,这就是您所使用的。

因此,当您说git log origin/branch时,不会生成远程branch在哪里的日志。 它会生成您上次从远程更新本地存储库时远程分支所在位置的日志。

因为标签不会移动,所以没有“标签的远程跟踪引用”的相应概念。 [1]

正确的方法是获取然后记录

git fetch origin
git log origin/branch

(由于您刚刚获取,这将反映遥控器中的任何内容,除非有人基本上同时推送。)

git fetch origin --tags
git log some-tag

[1] 通过配置,对于如何从源映射 refs(包括标签)实际上有很大的灵活性。 可以创建自己的命名约定来命名“我从远程获取的标签”,以便将它们与本地创建的标签区分开来。 有些细节你必须做对,而且通常价值很小(因为标签不应该移动)git 本身并没有打扰,所以我怀疑你会发现它太麻烦了; 但如果你真的想,你可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM