web-dev-qa-db-ja.com

git update-index--assume-unchangedおよびgitreset

シナリオは次のとおりです。

私の作業ディレクトリには、編集したファイル(A、B、Cと呼びましょう)がいくつかあります。次に、それらのファイルに対してgit update-index --assume-unchangedを実行しました。これで、git statusは空白を返します。良い。

ここで、git reset --hardを実行すると、ファイルA、B、およびCの内容は、編集して「変更しない」前の内容に戻ります。

Gitが実際にファイルA、B、Cを元に戻すのを止めて、単にそれらを無視する方法はありますか?

ありがとう、

ケン

38
Ken Hirakawa

できるよ:

git update-index --skip-worktree A
47
manojlds

それらを無視したい場合は、それらのファイルに.gitignoreファイルエントリを追加する必要があります。 .gitignoreファイルだけを追加してコミットすると、それらへの変更はすべて無視されます。

ただし、なぜそれを行っているのか、ファイルの内容、ファイルの性質(アーティファクトですか?)を教えてください。そうすれば、適切な答えが得られます。

また、update-indexassume-unchangedは、OSのファイルシステム上のツリーが特定のパスの変更を収集するのに長い時間がかかる場合にパフォーマンスを向上させるために使用されます。 git statusgit diffなどのコマンドの実行時間が長いためにこれらのファイルを無視しない限り、このファイルを使用することはお勧めしません。

1
Adam Dymitruk

あなたが使うことができます

$ git stash
$ git reset --hard
$ git stash pop
1
ViToni