web-dev-qa-db-ja.com

Gitからファイルを一時的に追跡しない

私は自分のマシンにローカルgitをセットアップしました。私がgitを初期化したとき、私は事前にコンパイルされたライブラリとバイナリを追加しました。しかし、今の私の開発中は、断続的にそれらのファイルをチェックインしたくありません。私はリポジトリからこれらのファイルを削除したくありません。開発が完了するまでこれらのファイルを追跡しないようにする方法はありますか。 (gitにないファイルに対してのみ機能するので、.gitignoreは使用できないと思います。一時的にファイルの追跡を無効にしたいのです。)

406
agent.smith

git update-index あなたが望むことをするべきです

これはgitにあなたがファイルへの変更を無視し始めたいことを伝えます
git update-index --assume-unchanged path/to/file

追跡をやり直したいとき
git update-index --no-assume-unchanged path/to/file

Githubドキュメンテーション:update-index

653
Andy

その後、ファイルを追跡しないようにすることができます。

git rm -r --cached <file>

でファイルを追加する

git add -u

彼らはあなたが欲しいものを押すか何でもします。

223
cajuuh
git rm --cached

ただし、そもそもコンパイルされたバイナリと外部依存関係をコミットするべきではありません。代わりに、Bundlerなどのツールを使用してそれらを取り込みます。

107
Tekkub

ファイルの追跡を解除するには、次のコマンドを使用します。

git rm --cached <file path>
22
Dinesh Vaitage

Git-bookの2.4節の "Undoing Things"でこれについて言及しています。基本的には、いくつかのファイルのインデックスの状態をHEAD状態、つまり最新のチェックアウト(またはコミット)の状態にリセットする必要があります。これにより、ファイルの現在のインデックスへのステージングが元に戻ります。このタスクのコマンドはgit resetです。[1]

したがって、実行する必要があるコマンドは次のとおりです。

git reset HEAD /path/to/file

新しいバージョンのgit(私は1.6かそこらから私は信じています)はgit statusを実行するときのヒントとしてこのコマンド(そしてもっと多くのもの)を与えます。これらのバージョンは非常にユーザーフレンドリーです。個人的なアドバイス:ファイルをいくつかステージングするだけの場合は、git add -iを使用してください。これにより対話的なステージングツールが起動し、作業が特に簡単になります。また、実用的な状況でgitを使用することを明示しているので、この本を読むことを強くお勧めします。

[1] http://www.git-scm.com/book

8
Eric Spreen

各ファイルを個別に選択するのではなく、buildフォルダーまたはbinフォルダー内のファイルをALL削除する方法を求めていると思います。

このコマンドを使用することができます:

git rm -r -f /build\*

自分がビルドディレクトリの親ディレクトリにいることを確認してください。
このコマンドは、bin /またはbuild /フォルダ内にあるすべてのファイルを再帰的に「削除」します。 Wordの削除とは、gitがそれらのファイルが「削除された」と見せかけ、それらのファイルが追跡されないことを意味します。 Gitは本当にそれらのファイルを削除モードにするようにマークします。

あなたの.gitignoreに今後のコミットの準備ができていることを確認してください。
ドキュメンテーション:git rm

5
Vraj Pandya

元の質問に対する答えではありません。しかし、これは誰かに役立つかもしれません。

行った変更を確認するには(どのファイルが--assume-unusedとしてマークされているかを知ってください

git ls-files -v

結果として得られるファイルのリストには、1文字の接頭辞が付きます(例:Hまたはh)。小文字(つまりh)の場合、ファイルは--assume-同じとなります。

4
prime

git reset [ファイル]

ステージング領域から作業ディレクトリにファイルを戻す

.gitignoreファイルに自分のノードモジュールを追加するのを忘れることがよくあります、これはその問題を解決します。

1
lordharbar

これは私のために働きました

git reset HEAD 'ファイル名'

1
Vivek

すべての未追跡ファイルを削除します。この端末コマンドを試してください。

 git clear -fdx
0
divya d