3467

私の最初のコミットには、いくつかのログ ファイルが含まれていました。に追加*logしました.gitignoreが、リポジトリからログ ファイルを削除したいと考えています。

git rm mylogfile.log

リポジトリからファイルを削除しますが、ローカル ファイル システムからも削除します。

ファイルのローカル コピーを削除せずに、このファイルをリポジトリから削除するにはどうすればよいですか?

4

12 に答える 12

4890

man ファイルから:

が指定されている場合--cached、ステージングされたコンテンツは、ブランチの先端またはディスク上のファイルのいずれかと一致する必要があり、ファイルをインデックスからのみ削除できます。

したがって、単一のファイルの場合:

git rm --cached mylogfile.log

および単一のディレクトリの場合:

git rm --cached -r mydirectory
于 2009-07-17T14:57:26.933 に答える
303

リポジトリからフォルダー全体 (Resharper ファイルなど) を削除するには、次のようにします。

git rm -r --cached folderName

私はいくつかの resharper ファイルをコミットしましたが、それらを他のプロジェクト ユーザーに保持させたくありませんでした。

于 2012-04-04T18:14:01.270 に答える
119

ここでの私の回答によると:https://stackoverflow.com/questions/6313126/how-to-remove-a-directory-in-my-github-repository

ローカルからではなく、git リポジトリからのみフォルダ/ディレクトリまたはファイルを削除するには、3 つの簡単な手順を試してください。


ディレクトリを削除する手順

git rm -r --cached File-or-FolderName
git commit -m "Removed folder from repository"
git push origin master

次のコミットでそのフォルダーを無視する手順

次のコミットからそのフォルダーを無視するには、ルートに.gitignoreという名前のファイルを 1 つ作成 し、そのフォルダー名を入れます。好きなだけ入れることができます

.gitignoreファイルは次のようになります

/FolderName

ディレクトリを削除

于 2015-08-24T12:16:36.007 に答える
76

より一般的な解決策:

  1. ファイルを編集し.gitignoreます。

    echo mylogfile.log >> .gitignore

  2. インデックスからすべてのアイテムを削除します。

    git rm -r -f --cached .

  3. インデックスを再構築します。

    git add .

  4. 新しいコミットを作成

    git commit -m "Removed mylogfile.log"

于 2013-12-13T11:42:32.020 に答える
74

また、機密データ (パスワードを含むファイルなど) をコミットした場合は、リポジトリの履歴から完全に削除する必要があります。これを行う方法を説明するガイドは次のとおりです。 http://help.github.com/remove-sensitive-data/

于 2011-08-21T12:16:36.180 に答える
10

ファイルを無視し、git からファイルを削除し、git を更新します (削除用)。

注 : これは、機密情報の履歴を処理しません。

このプロセスでは、git で何が行われているのかを理解する必要があります。時間が経つにつれて、それを獲得して、次のようなプロセスを実行することを学びました。

1) ファイルを無視する

  • それらを無視するようにプロジェクトを追加または更新し.gitignoreます。多くの場合、あなたの親ディレクトリなど、log/使用する正規表現になります。
  • そのファイルの変更をコミットしてプッシュし.gitignoreます(プッシュが必要かどうかはわかりませんが、行っても害はありません)。

2) git からファイルを削除します (のみ)。

  • git(のみ)からファイルを削除しますgit rm --cached some_dir/
  • それらがまだローカルに残っていることを確認してください (そうすべきです!)。

3) その変更を追加してコミットします (基本的に、これは混乱を招く「追加」コマンドにもかかわらず、削除するものを「追加」するための変更です!)

  • git add .
  • git commit -m"removal"
于 2020-04-14T15:37:31.347 に答える
0

これは、git からの「削除」の意味によって異なります。:)

git rm --cached を使用してファイルのステージングを解除できます。詳細については、参照してください。何かをステージング解除すると、それは追跡されなくなったことを意味しますが、以前のコミットからファイルが削除されるわけではありません。

ファイルのステージングを解除する以上のことをしたい場合、たとえば、以前のすべてのコミットから機密データを削除する場合は、BFG Repo-Cleanerなどのツールを使用してブランチをフィルタリングすることを検討する必要があります。

于 2020-11-15T18:14:08.890 に答える