19

レポに特定のファイルがあり、変更されていないと仮定するビットをオンに設定しました。

git update-index --assume-unchanged someFile.txt

たまに、レポで何らかの作業を行った後、そのビットが設定解除され、ファイルが自動的に設定されなくassume-unchangedなります。

誰が触ってる?明示的にgitに指示するまで、これを永続的にするにはどうすればよいですか:

git update-index --no-assume-unchanged someFile.txt

何が起きてる?


編集:私は、ローカルで変更される構成ファイルで想定変更されていないビットを使用しており、アップストリームにプッシュされることは言うまでもなく、決してコミットされるべきではありません。git statusそれらの1つを編集してコミットしたいことをgitに明示的に伝えない限り、私はそれらを や他の場所で見たくありません。


編集:OK、問題を再現できたと思います。

私は別のレポからファイルをコミットし(それは--assume-unchanged.

したがって、次の 2 つの疑問が生じます。

  1. すべてのリポジトリに伝播するように、中央の信頼できるリポジトリにこのビットを設定することは可能ですか?
  2. リモートで変更した後でも、このビットをスティッキーにすることは可能ですか?
4

2 に答える 2

3

バージョン管理されたファイルを無視すると、IIRC はそのように動作します。からすべての作業ツリー.gitignoreまたは特定の作業ツリーを.git/info/exclude無視できます(はい、動作しますが、意図した方法ではありません)。

于 2011-09-13T09:27:47.727 に答える
1

--skip-worktree+ sparse checkout は、この種の動作を許可するようです。

gitから 、変更されていないことを想定し、worktree をスキップ - シンボリック リンクを無視(いくつかのコンテキスト変更あり):

  • core.sparseCheckoutリポジトリに対して true に設定します。
  • すべてを含める場合とローカル ファイル「someFile.txt」を除外する場合の.git/info/sparse-checkout2 つのパターンを含むファイルを作成します。*!/path/to/someFile.txt
  • ここで、skip-worktree ビットを手動で someFile.txt に設定します。

これで、git がディレクトリを自動的にコミットするのではないかと心配することなく続行できますが、誰かが明示的に git add をディレクトリまたはその中のファイルに対して実行すると、問題が発生することに注意してください。

マニュアルページでさらに調査すると、--skip-worktree質問されているユースケースにより適していることが示されているようです。

于 2013-09-11T15:09:03.137 に答える