2017-04-07 52 views
3

我在bash中使用git,我有一個花式bash提示,它提供了一些存儲庫信息,而不必輸入git status。它告訴我我在哪個分支上,有多少修改和未跟蹤的文件,並且與這個問題有關,遠程我前後有多遠。git會自動運行「fetch」,還是隻有當我告訴它時?

最近我開始注意到一些奇怪的東西:經常當我按下回車鍵並出現一個新的提示時,它突然告訴我,我是主人背後的一些提交。而且,事實上,我是,「git status」證實了這一點。但我的問題是:它是如何知道的?在任何時候,我都沒有運行git fetchgit pull或任何其他與遠程交談的命令,並查明我的本地結帳有多遠/多遠。實際上,我已經看到它發生在我確信我沒有在其間運行任何git命令的情況下,除了git status -z --porcelain,我的bash提示腳本運行以生成提示。

它嚇了我一下。我的意思是,這些信息當然是有幫助的,但在我知道的情況下,在我的存儲庫上運行git命令的想法有點令人不安。所以這裏是我的問題:

  1. git做這種事情嗎?作爲運行其他命令的結果,在後臺自動運行提取?顯然,推/拉需要運行取來執行,但我說的是「本地」的命令,如git statusgit addgit commitgit diff

  2. 有什麼樣的git的「命令日誌」的,我可以在哪裏審覈哪些操作運行,何時以及由誰執行?

+0

忘記包括:我正在運行macOS,並使用Xcode命令行工具版本2.11.0附帶的stock git。 – Oskar

+0

你是否在使用其他的git-aware工具?例如,我知道Tower for Mac會偶爾進行提取。如果你有其他的git工具或者git-aware工具,其中一個可以做同樣的事情。 –

+0

我剛剛檢查過,唯一的其他東西是我安裝的SourceTree。但它沒有運行。也許它已經安裝了一些服務或某些東西來運行常規提取。我會看看我能否發現這是否是事實。 – Oskar

回答

1
  1. 不,它不
  2. 不,我知道的。你可以做的是設置環境變量GIT_TRACE,然後Git告訴你它在內部調用哪些命令。
0

除非你(或其他人)在你的機器上設置了一些特殊的東西來使它運行提取,否則它不會。 「前/後」計數是將本地分支與遠程引用進行比較,並通過與服務器的最後一次通信進行更新。

那麼如何解釋呢?由於它可能與你的安裝好奇有關,所以我最多可以提出猜測。

當然,我在多個窗口中工作,所以有時我的提示是陳舊的,因爲我一直在另一個工作,並按ENTER更新它。當然,如果你這樣做的話,你可能會知道 ...但是類似的情況(這種情況不應該發生,但是我不能排除只有我的系統知識) - 如果你的本地回購是共享的存儲和其他用戶也在使用它,你可能會看到他們的工作成果。 (如果是這樣的話,我強烈建議你讓每個開發人員開發一個獨特的repo,只有一個開發人員可以訪問;這正是克隆的用途,但正如我所說的,無論如何這只是猜測......)

另一個顯而易見的可能性是,如果有人認爲在後臺按預定時間間隔運行提取可能會有所幫助。我個人會發現這種惡化,但我可以想象它會發生,它會解釋你所看到的行爲。

+0

回購沒有被任何人共享,只是在我的本地驅動器上。我認爲它可能像我自己的「多窗口」的東西,我只是忘記了運行一個抓取或拉什麼的東西,但這足以讓我無法想象這是爲什麼。我不知道我的安裝可以做到這一點,但我會調查。 – Oskar

1

我在bash中使用git,我有一個奇特的bash提示,它提供了一些存儲庫信息,而不必輸入git狀態。

這似乎是迄今爲止最可能的罪魁禍首。 Magicmonty是運行git fetch(參見gitprompt.sh)的git提示腳本的一個示例。我打賭你會發現罪魁禍首,如果你通過腳本設置你的提示。

+0

我自己寫了bash提示腳本,它只調用我指定的狀態命令。這是我的dotfiles回購的一部分,在這裏:https://github.com/OskarSigvardsson/dotfiles/blob/master/bash/bash_prompt.py(這很粗糙,不是真的意味着公共消費,但它是) – Oskar

相關問題