トラッキングからフォルダ(名前のアップロード)を除外する必要があります。走ろうとした
git rm -r --cached wordpress/wp-content/uploads
その後、私は.gitignoreへのパスを追加しました
/wordpress/wp-content/uploads
しかし、私がgit status
を実行すると、それらは削除されたものとして表示されます。変更をコミットしようとすると、ファイルは追跡から削除されるだけでなく、削除されます。
何がおかしいのですか?
私も試してみました
git update-index --assume-unchanged <file>
しかし、これはファイルだけを追跡しないようです。しかし、私は追跡からフォルダ全体(サブフォルダを含む)を削除する必要があります。
"git追跡からフォルダを削除する"ためのグーグル中に私はこの質問に遭遇しました。 OPの質問は私に答えを導きました。私はそれを将来の世代のためにここにまとめています。
質問
ローカルマシン(つまり開発環境)からフォルダを削除せずにgitリポジトリからフォルダを削除するにはどうすればよいですか。
答え
手順1.リポジトリのルートの.gitignore
ファイルにフォルダパスを追加します。
path_to_your_folder/
ステップ2.あなたのローカルgitトラッキングからフォルダを削除しますが、それはあなたのディスク上に保管してください。
git rm -r --cached path_to_your_folder/
ステップ3. gitリポジトリに変更をプッシュします。
このフォルダはGitの観点からは「削除された」と見なされます(つまり、過去の履歴にはありますが最新のコミットには含まれていません。 --cached
を使ったことがあるからです。
これは私のために働く:
git rm -r --cached --ignore-unmatch folder_name
--ignore-unmatch
はここで重要です、そのオプションなしでgitはインデックスにない最初のファイルでエラーで終了します。
ディレクトリを忘れるには、パスに/*/*
を再帰的に追加します。
git update-index --assume-unchanged wordpress/wp-content/uploads/*/*
git rm --cached
を使用することは共同作業には良くありません。詳細はこちら: Gitでファイルへの変更を追跡を無視して無視するにはどうすればいいですか?
Gitのドキュメントから:
あなたがしたいと思うかもしれないもう一つの有用なことはあなたの作業ツリーにファイルを保存するがあなたのステージング領域からそれを削除することです。言い換えれば、あなたはあなたのハードドライブにファイルを保存したいがGitにもうそれを追跡させたくないかもしれません。これは、大きなログファイルや大量の.aコンパイル済みファイルのように、.gitignoreファイルに何かを追加し忘れて誤って追加した場合に特に便利です。これを行うには、 - cacheオプションを使用します。
$ git rm --cached readme.txt
それでは、「 - r」を含めないでください。
私はこれが古いスレッドであることを知っていますが、マークされた解決策が私のために問題を解決しなかったので私は少しだけ追加したいと思いました(私は何度も試しましたが)。
フォルダを追跡するgitフォームを実際に停止させることができる唯一の方法は、次のことです。
git rm -r --cached your_folder/
your_folder/
を追加フォルダが追跡されなくなったことがわかります。
キャッシュをクリアしただけではうまくいかなかったのは私に聞かないでください。私はGitスーパーウィザードではありませんが、これで問題が解決しました。
ステップ2.5:変更を確定します
>git commit
あなたが最初にこれをしないでプッシュするなら、それは何もしません!