私の最初のコミットには、いくつかのログ ファイルが含まれていました。に追加*log
しました.gitignore
が、リポジトリからログ ファイルを削除したいと考えています。
git rm mylogfile.log
リポジトリからファイルを削除しますが、ローカル ファイル システムからも削除します。
ファイルのローカル コピーを削除せずに、このファイルをリポジトリから削除するにはどうすればよいですか?
私の最初のコミットには、いくつかのログ ファイルが含まれていました。に追加*log
しました.gitignore
が、リポジトリからログ ファイルを削除したいと考えています。
git rm mylogfile.log
リポジトリからファイルを削除しますが、ローカル ファイル システムからも削除します。
ファイルのローカル コピーを削除せずに、このファイルをリポジトリから削除するにはどうすればよいですか?
man ファイルから:
が指定されている場合
--cached
、ステージングされたコンテンツは、ブランチの先端またはディスク上のファイルのいずれかと一致する必要があり、ファイルをインデックスからのみ削除できます。
したがって、単一のファイルの場合:
git rm --cached mylogfile.log
および単一のディレクトリの場合:
git rm --cached -r mydirectory
リポジトリからフォルダー全体 (Resharper ファイルなど) を削除するには、次のようにします。
git rm -r --cached folderName
私はいくつかの resharper ファイルをコミットしましたが、それらを他のプロジェクト ユーザーに保持させたくありませんでした。
ここでの私の回答によると:https://stackoverflow.com/questions/6313126/how-to-remove-a-directory-in-my-github-repository
ディレクトリを削除する手順
git rm -r --cached File-or-FolderName
git commit -m "Removed folder from repository"
git push origin master
次のコミットでそのフォルダーを無視する手順
次のコミットからそのフォルダーを無視するには、ルートに.gitignoreという名前のファイルを 1 つ作成 し、そのフォルダー名を入れます。好きなだけ入れることができます
.gitignoreファイルは次のようになります
/FolderName
より一般的な解決策:
ファイルを編集し.gitignore
ます。
echo mylogfile.log >> .gitignore
インデックスからすべてのアイテムを削除します。
git rm -r -f --cached .
インデックスを再構築します。
git add .
新しいコミットを作成
git commit -m "Removed mylogfile.log"
また、機密データ (パスワードを含むファイルなど) をコミットした場合は、リポジトリの履歴から完全に削除する必要があります。これを行う方法を説明するガイドは次のとおりです。 http://help.github.com/remove-sensitive-data/
注 : これは、機密情報の履歴を処理しません。
このプロセスでは、git で何が行われているのかを理解する必要があります。時間が経つにつれて、それを獲得して、次のようなプロセスを実行することを学びました。
.gitignore
ます。多くの場合、あなたの親ディレクトリなど、log/
使用する正規表現になります。.gitignore
ます(プッシュが必要かどうかはわかりませんが、行っても害はありません)。git rm --cached some_dir/
git add .
git commit -m"removal"
これは、git からの「削除」の意味によって異なります。:)
git rm --cached を使用してファイルのステージングを解除できます。詳細については、参照してください。何かをステージング解除すると、それは追跡されなくなったことを意味しますが、以前のコミットからファイルが削除されるわけではありません。
ファイルのステージングを解除する以上のことをしたい場合、たとえば、以前のすべてのコミットから機密データを削除する場合は、BFG Repo-Cleanerなどのツールを使用してブランチをフィルタリングすることを検討する必要があります。