2017-04-07 10 views
3

私はbashでgitを使用していますが、git statusを入力しなくてもリポジトリ情報を提供する素晴らしいbashプロンプトが表示されます。どのブランチにあるのか、変更されたファイルと追跡されていないファイルの数、そしてこの質問に関連して、遠方/遠方からどのくらい離れているのかを教えてくれます。gitは自動的に "フェッチ"を実行するのですか?

最近、私はenterを押して新しいプロンプトが表示されると、何か変わったことに気づき始めました。突然、私はマスターの後ろにいくつかのコミットがあると私に伝えます。そして、実際には、私は "git status"でそれを確認しています。しかし、私の質問は:どのようにそれを知っているのですか?私はgit fetchまたはgit pullを実行したことがありませんでしたか、またはリモコンと会話し、私のローカルチェックアウトの遅れを知るコマンドを実行しませんでした。実際には、間にgitコマンドを実行していないことがわかりましたが、プロンプトを生成するためにbashプロンプトスクリプトが実行するgit status -z --porcelainを除いて、gitコマンドを実行していないことがわかりました。

私はちょっと驚いています。つまり、情報は確かに役に立ちますが、私のリポジトリでgitコマンドを実行していることのアイデアは私には分かりませんが、少し不安です。だからここに私の質問です:

  1. gitはこのようなことをしますか?他のコマンドを実行した結果、バックグラウンドで自動的にフェッチを実行しますか?もちろん、/プルを押して実行するためにフェッチを実行する必要がありますが、私は「ローカル」について話しているなどgit statusgit addgit commitgit diff

  2. はgitの中に「コマンドログ」のいずれかの種類がありますなどのコマンドどのオペレーションが実行されたのか、いつ、誰によって実行されたのかを監査することができます。

+0

私はmacOSを使い、Xcodeのコマンドラインツールであるバージョン2.11.0に付属のgitを使います。 – Oskar

+0

あなたはgit対応の他のツールを使用していますか?たとえば、Mac用のTowerが時々フェッチを行うことはわかっています。他のgitツールやgit対応ツールがある場合、そのうちの1つが同じことをする可能性があります。 –

+0

私はちょうどチェックし、唯一の他のものは私がインストールしたSourceTreeです。しかし、それは実行されていません。たぶん、定期的なフェッチを実行するサービスや何かをインストールしているかもしれません。もし私がそれが問題なのかどうかを知ることができるかどうかがわかります。 – Oskar

答えて

1
  1. いや、それは私の知っていることはありません
  2. ません。あなたができることは、環境変数GIT_TRACEを設定し、Gitが内部的にどのコマンドを呼び出すかを指示することです。
0

あなた(または他の誰か)があなたのマシンで特別な設定をしてフェッチを実行させない限り、それはしません。 「前方/後方」カウントは、サーバーとの最後の通信によって更新されたローカル参照とリモート参照の比較です。

これを説明する方法は?おそらくあなたのインストールに興味があるので、私はせいぜい推測をすることができます。

確かに私は複数のウィンドウで作業していますので、別のウィンドウで作業していたために私のプロンプトが古くなることがあります。もちろん、あなたはおそらくを知っていると思います...しかし、これは決して起こらないはずの似たようなケースですが、自分のシステムに関する私の知識から除外することはできません。もしあなたのローカルレポが共有されているストレージと別のユーザーが一緒に作業している場合、あなたは自分の仕事の結果を見ることができます。 (それが当てはまる場合は、各開発者が1つの開発者がアクセスする別個のレポに取り組むことを強くお勧めします;それはまさにクローンのためのものですが、私が言ったように、ちょうど推測です...)

もう1つの明らかな可能性は、バックグラウンドでスケジュールされた間隔でフェッチを実行すると便利かもしれないと考えた場合です。私はこれが個人的に悪化していることがわかりますが、私はそれが起こっていると想像することができ、あなたが見ている行動を説明します。

+0

リポジトリは誰にも共有されていません。ローカルドライブ上にあります。私はそれがフェッチや引っ張りなど何かを実行することを忘れてしまった、「複数のウィンドウ」のようなものかもしれないと思ったが、それが原因であるとは思えないほど十分に起こった。私のインストールがこれを行うことができるかどうかわかりませんが、私は調査します。 – Oskar

1

私はbashでgitを使用していますが、git statusを入力せずにリポジトリ情報を提供する素晴らしいbashプロンプトが1つあります。

これは、もっともらしい原因のようです。 Magicmontyは、git fetchgitprompt.shを参照)を実行するgitプロンプトスクリプトの一例です。プロンプトを設定するスクリプトを見ると、犯人を見つけることができると思います。

+0

私はbashプロンプトスクリプトを自分で作成しました。指定したステータスコマンドだけを呼び出します。これは私のドットファイルリポジトリの一部です:https://github.com/OskarSigvardsson/dotfiles/blob/master/bash/bash_prompt.py(これはかなり荒いですが、公共の消費のためではありませんが、そこにあります) – Oskar

関連する問題