繁体   English   中英

git是自动运行“fetch”,还是仅在我告诉它时?

[英]Does git run “fetch” automatically, or only when I tell it to?

我在bash中使用git,我有一个那些花哨的bash提示,它给了我一些存储库信息,而不必输入git status 它告诉我我在哪个分支,修改和未跟踪文件的数量,以及与此问题相关的遥控器前后多远。

最近我开始注意到一些奇怪的事情:通常当我按下回车键并出现一个新的提示时,它会突然告诉我,我在主人后面有一些提交。 而且,事实上,我是“git status”证实了这一点。 但我的问题是:它是如何知道的? 在任何时候我都没有运行git fetchgit pull或任何其他可以与远程通信的命令,并找出我本地结账的距离/后面。 事实上,我已经看到它发生在我相当确定我之间没有运行任何git命令的情况,除了git status -z --porcelain我的bash提示脚本运行以生成提示。

这让我有点吓坏了。 我的意思是,这些信息肯定是有用的,但是在我不知道它的情况下在我的存储库上运行git命令的想法有点令人不安。 所以这是我的问题:

  1. git会做这种事吗? 由于运行其他命令,在后台自动运行提取? 显然,推/拉需要运行一个fetch来执行,但我说的是“本地”命令,如git statusgit addgit commitgit diff等。

  2. 在git中是否有任何类型的“命令日志”,我可以在哪里审核哪些操作被运行,何时以及由谁运行?

我在bash中使用git,我有一个那些花哨的bash提示,它给了我一些存储库信息,而不必输入git status。

到目前为止,这似乎是最可能的罪魁祸首。 Magicmonty是运行git fetch的git提示脚本的一个示例(请参阅gitprompt.sh )。 我敢打赌,如果你查看设置提示的脚本,你会找到罪魁祸首。

  1. 不,它没有
  2. 从来没听说过。 你可以做的是设置环境变量GIT_TRACE ,然后Git告诉你它内部调用哪些命令。

除非您(或其他人)在您的机器上设置了一些特殊的东西以使其运行提取,否则它不会。 “前进/后退”计数是您的本地分支与远程引用的比较,由上次与服务器的通信更新。

那怎么解释呢? 因为它可能与你的装置有些好奇,我最多可以提出一些猜测。

当然我在多个窗口工作,所以有时候我的提示是陈旧的,因为我一直在另一个工作,并点击ENTER更新它。 当然你可能知道你是否这样做......但是类似的情况(这应该永远不会发生,但我不能仅凭我对你的系统的了解排除) - 如果你的本地仓库在共享存储中并且另一个用户也在使用它,你可能会看到他们工作的结果。 (如果是这种情况,我强烈建议你让每个开发人员都在处理一个只有那个开发人员访问的独特仓库;这正是克隆人的用途。但就像我说的那样,无论如何都只是推测......)

另一个明显的可能性是,如果有人认为在后台以预定的时间间隔运行提取可能会有所帮助。 我个人会发现这种情况恶化,但我可以想象它会发生,它会解释你所看到的行为。

暂无
暂无

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

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