2015-10-30 13 views
9

git rm --cachedgit update-index --assume-unchangedの違いを理解できません。`git rm --cached`と` git update-index --assume-unchanged`の違いは?

git rm --cached <file>はステージングエリアからファイルを削除することに気付きました。

また、私はgit update-index --assume-unchanged <file>もこれを行うことを知っています。

私は、両方のコマンドがここで同様の質問に対する提案として提供されているのを見たことがあります。

これらの2つのコマンドのいずれかに、別の影響がありますか?

+1

以下の回答をご覧ください。ありがとうございます。 –

+0

申し訳ありませんが、1日はアフリカでした。 – Hunle

答えて

4

コマンド

git rm --cached <file> 

Gitのブランチにuntrackファイルに使用されています。このコマンドは、ステージング領域からfileを削除し、も削除します。は、次にコミットするときにリポジトリからファイルを削除します。

コマンド

git update-index --assume-unchanged <file> 

fileがステージング領域から消えるようになります。しかし、このコマンドはGitにという唯一のものをに変更すると、fileに対して行われた変更は無視されるため、このコマンドは異なります。したがって、ファイルをコミットすると、すでにそこにあると仮定してリポジトリの一部として残ります。以前assume-unchangedを実行したときにそれがあった場合、これは、ステージング領域にファイルを返します

git update-index --no-assume-unchanged <file> 

:あなたはGitが再びfileに加えられた変更を確認したいときは、これを実行することができます。

git rm --cachedの場合はlink、ここではgit update-index --assume-unchangedの場合はlinkです。

+0

'git update-index --assume-unchanged'は、ファイルのエントリをインデックスから削除しませんが、Gitがファイルシステム上の一致するファイルに対してこのエントリをチェックするのを止めさせます。私はあなたがおそらくちょうど文句を言うことを信じているかもしれませんが、それは重要なものです;-)おそらく私の言いたいことをもっと明確にするために、最初はインデックス( 'git read-tree'の直後) Gitを索引項目に "盲目にする"ことは実際には*削除*と同じではありません。 – kostix

+0

Hm。私はあなたのポイントを見て、それは重要なものです。ありがとうございました。質問: 'git update-index --no-assume-unchanged 'コマンドを忘れた場合、覚えがない限り、私のファイルを無視し続けるでしょうか?もしそうなら、それは私にこのコマンドの使用について少し神経質になります。 – Hunle

+0

また、 'git rm --help'ページでは、ファイルをリポジトリから削除することについて何も言及していませんでした。あなたはこれをサポートするソースを持っていますか@TimBiegeleisen? – Hunle

関連する問題