使用する場合
git rm --cached myfile
目標であるローカルファイルシステムからは削除されません。ただし、ファイルをすでにバージョン管理してコミットし、中央リポジトリにプッシュし、コマンドを使用する前にさらに別のリポジトリにプルした場合は、そのシステムからファイルが削除されます。
ファイルシステムからファイルを削除せずに、バージョン管理からファイルを削除する方法はありますか?
編集:明確にされた、私は願っています。
使用する場合
git rm --cached myfile
目標であるローカルファイルシステムからは削除されません。ただし、ファイルをすでにバージョン管理してコミットし、中央リポジトリにプッシュし、コマンドを使用する前にさらに別のリポジトリにプルした場合は、そのシステムからファイルが削除されます。
ファイルシステムからファイルを削除せずに、バージョン管理からファイルを削除する方法はありますか?
編集:明確にされた、私は願っています。
今週、誤ってコミットしたときにまったく同じ問題が発生し、共有リポジトリからビルドファイルを削除しようとしました。
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 すると、インデックスに追加されます。このフラグをオンにしてコミットをマージすると、マージが正常に失敗するため、手動で処理できます。
インデックスからファイルを削除するには、次を使用します。
git reset mylife
これは、ローカル コピーや他のユーザーのコピーには影響しません。
コマンドを実行した後、ファイルにgit rm --cached
追加myfile
してみてください.gitignore
(存在しない場合は作成します)。これにより、git に無視するように指示する必要がありますmyfile
。
この.gitignore
ファイルはバージョン管理されているため、コミットしてリモート リポジトリにプッシュする必要があります。
私の解決策は、他の作業コピーを取得してから次のことを行うことです。
git log --pretty="format:" --name-only -n1 | xargs git checkout HEAD^1
これは、最新のコメントですべてのファイル パスを取得し、HEAD の親からそれらをチェックアウトすることを示しています。ジョブ完了。