171

使用する場合

git rm --cached myfile

目標であるローカルファイルシステムからは削除されません。ただし、ファイルをすでにバージョン管理してコミットし、中央リポジトリにプッシュし、コマンドを使用する前にさらに別のリポジトリにプルした場合は、そのシステムからファイルが削除されます。

ファイルシステムからファイルを削除せずに、バージョン管理からファイルを削除する方法はありますか?

編集:明確にされた、私は願っています。

4

7 に答える 7

123
于 2010-04-10T07:52:26.630 に答える
88

今週、誤ってコミットしたときにまったく同じ問題が発生し、共有リポジトリからビルドファイルを削除しようとしました。

http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html

私にとってはうまくいきましたが、これまで言及されていません。

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

対象のファイルをバージョン管理から削除するには、他のすべてのコマンドを通常どおり使用します。

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

入れ直したいと思ったら。

編集: Chris Johnsen と KPM からのコメントを参照してください。これはローカルでのみ機能し、他のユーザーがバージョン管理を行わない場合、ファイルは引き続きバージョン管理されます。受け入れられた答えは、これに対処するためのより完全で正しい方法を提供します。また、この方法を使用する場合のリンクからのメモ:

明らかに、これにはかなりの注意事項があります。ファイルを直接 git add すると、インデックスに追加されます。このフラグをオンにしてコミットをマージすると、マージが正常に失敗するため、手動で処理できます。

于 2012-05-27T11:08:52.553 に答える
29

インデックスからファイルを削除するには、次を使用します。

git reset mylife

これは、ローカル コピーや他のユーザーのコピーには影響しません。

于 2010-04-09T12:51:48.903 に答える
15

コマンドを実行した後、ファイルにgit rm --cached追加myfileしてみてください.gitignore(存在しない場合は作成します)。これにより、git に無視するように指示する必要がありますmyfile

この.gitignoreファイルはバージョン管理されているため、コミットしてリモート リポジトリにプッシュする必要があります。

于 2010-04-09T01:58:35.937 に答える
1

私の解決策は、他の作業コピーを取得してから次のことを行うことです。

git log --pretty="format:" --name-only -n1 | xargs git checkout HEAD^1

これは、最新のコメントですべてのファイル パスを取得し、HEAD の親からそれらをチェックアウトすることを示しています。ジョブ完了。

于 2012-01-05T16:24:22.167 に答える