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

时间:2017-04-07 13:16:20

标签: git

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

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

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

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

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

3 个答案:

答案 0 :(得分:1)

  1. 不,它没有
  2. 不是我所知道的。你可以做的是设置环境变量stdout,然后Git告诉你它内部调用哪些命令。

答案 1 :(得分:1)

  

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

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

答案 2 :(得分:0)

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

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

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

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