web-dev-qa-db-ja.com

Gitトラッキングからフォルダを削除する

トラッキングからフォルダ(名前のアップロード)を除外する必要があります。走ろうとした

git rm -r --cached wordpress/wp-content/uploads

その後、私は.gitignoreへのパスを追加しました

/wordpress/wp-content/uploads

しかし、私がgit statusを実行すると、それらは削除されたものとして表示されます。変更をコミットしようとすると、ファイルは追跡から削除されるだけでなく、削除されます。

何がおかしいのですか?

私も試してみました

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

しかし、これはファイルだけを追跡しないようです。しかし、私は追跡からフォルダ全体(サブフォルダを含む)を削除する必要があります。

277
Stefan

"git追跡からフォルダを削除する"ためのグーグル中に私はこの質問に遭遇しました。 OPの質問は私に答えを導きました。私はそれを将来の世代のためにここにまとめています。

質問

ローカルマシン(つまり開発環境)からフォルダを削除せずにgitリポジトリからフォルダを削除するにはどうすればよいですか。

答え

手順1.リポジトリのルートの.gitignoreファイルにフォルダパスを追加します。

path_to_your_folder/

ステップ2.あなたのローカルgitトラッキングからフォルダを削除しますが、それはあなたのディスク上に保管してください。

git rm -r --cached path_to_your_folder/

ステップ3. gitリポジトリに変更をプッシュします。

このフォルダはGitの観点からは「削除された」と見なされます(つまり、過去の履歴にはありますが最新のコミットには含まれていません。 --cachedを使ったことがあるからです。

613
Tod Birdsall

これは私のために働く:

git rm -r --cached --ignore-unmatch folder_name

--ignore-unmatchはここで重要です、そのオプションなしでgitはインデックスにない最初のファイルでエラーで終了します。

21
qed

ディレクトリを忘れるには、パスに/*/*を再帰的に追加します。

git update-index --assume-unchanged wordpress/wp-content/uploads/*/*

git rm --cachedを使用することは共同作業には良くありません。詳細はこちら: Gitでファイルへの変更を追跡を無視して無視するにはどうすればいいですか?

7
vitalets

Gitのドキュメントから:

あなたがしたいと思うかもしれないもう一つの有用なことはあなたの作業ツリーにファイルを保存するがあなたのステージング領域からそれを削除することです。言い換えれば、あなたはあなたのハードドライブにファイルを保存したいがGitにもうそれを追跡させたくないかもしれません。これは、大きなログファイルや大量の.aコンパイル済みファイルのように、.gitignoreファイルに何かを追加し忘れて誤って追加した場合に特に便利です。これを行うには、 - cacheオプションを使用します。

$ git rm --cached readme.txt

それでは、「 - r」を含めないでください。

5
user3750325

私はこれが古いスレッドであることを知っていますが、マークされた解決策が私のために問題を解決しなかったので私は少しだけ追加したいと思いました(私は何度も試しましたが)。

フォルダを追跡するgitフォームを実際に停止させることができる唯一の方法は、次のことです。

  1. ローカルフォルダのバックアップを作成して安全な場所に置きます。
  2. ローカルレポジトリからフォルダを削除します
  3. キャッシュがクリアされていることを確認してくださいgit rm -r --cached your_folder/
  4. .gitignoreにyour_folder/を追加
  5. 変更をコミット
  6. バックアップをリポジトリに戻します。

フォルダが追跡されなくなったことがわかります。

キャッシュをクリアしただけではうまくいかなかったのは私に聞かないでください。私はGitスーパーウィザードではありませんが、これで問題が解決しました。

2
lukehillonline

ステップ2.5:変更を確定します

>git commit

あなたが最初にこれをしないでプッシュするなら、それは何もしません!

1
M.H.