【问题标题】:Do I need to 'fetch' before checking what the current SHA on a Git remote is?在检查 Git 遥控器上的当前 SHA 是什么之前,我是否需要“获取”?
【发布时间】:2013-12-31 22:04:21
【问题描述】:

我(认为)我知道我可以使用 git rev-parse 来确定我本地 Git 分支上当前提交的 SHA,包括以 remotes/... 开头的那些;但我认为这不会反映与后者对应的远程存储库的状态,除非我首先git fetch。那是对的吗?是

git fetch origin master
git rev-parse remotes/origin/master

确定远程分支上当前提交的 SHA 的正确习惯用法?执行 fetch 是否有副作用,使这个过度?还有其他方法吗?

【问题讨论】:

    标签: git fetch sha git-remote


    【解决方案1】:

    git ls-remote origin master 也会给你origin/master 的 sha 而不实际执行 fetch(它不会下载任何对象或更新 refs/remotes 中的任何内容)但它不是任何普通 git 工作流的一部分,可能是因为如果没有它所指的提交,sha 并不是很有用。

    【讨论】:

    • 完美,谢谢!我的用例是构建脚本——我使用 git 的状态来驱动我的版本号,我需要知道它是否是权威的/最新的(原始哈希与我的本地哈希相同),而不需要获取或修改当地的州。
    【解决方案2】:

    你是对的。与 SVN 等工具不同,Git 仅在本地存储和使用信息。

    如果您想查看可能已在远程存储库上执行的最新活动,您可以:

    1. git fetch
    2. 如果所有者已启用,则远程浏览 repo。

    定期运行git fetch 可能不是问题,具体取决于您的网络等。但是,即使使用 SVN,大多数人在他们自己准备好提交之前并不关心其他提交,因此每 60 秒更新一次您的 repo 可能是矫枉过正。

    Git 用户经常提交并推送他们的功能分支,因此在集成时间之前也不关心其他分支,这可能会在以后在不同的 repo 中完成。

    您需要做出对您的工作流程和设置有意义的选择。但是,如果您要从集中式模型(例如 SVN)迁移,请不要害怕放手,尝试一些更“Git'sh”的东西 :-)

    关于远程浏览。 Git 带有一个名为 instaweb git instaweb --help 的子命令,它将能够通过浏览器提供 repo 信息

    【讨论】:

    • 你能多谈谈第二个选项吗?如果第一个选项没有害处,为什么不只是 git fetch 每分钟(或任何对项目有意义的)来确保我知道远程发生了什么?
    • @raxacoricofallapatorius 没有理由不获取每一分钟,除非你不需要知道每分钟远程发生的事情,而且你不应该浪费资源这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2011-02-26
    • 2021-09-21
    相关资源
    最近更新 更多