誤って9000枚以上の写真をプロジェクトフォルダに追加しました。そしてそれらをコミットしました。その後、それらをディスクから削除しました。関与する。
今、変更をgitサーバーにプッシュしようとしています。ただし、時間がかかりすぎて、12 Gbのデータを送信しようとします。
ディスク上のファイルサイズを確認したところ、.git
フォルダーが実際に12 Gb必要であることがわかりました。
写真を削除する方法そこから? git rm
を試しましたが、失敗します:
❯ git rm public/photos
fatal: pathspec 'public/photos' did not match any files
私はすでにディスクからそれらを削除したが、それらはまだ.git
フォルダーにあるためです。
public/photos
を.gitignore
に追加しようとしました:
public/photos/
*.Zip
しかし、結果はありません。もちろん、私のプロジェクトにあまり多くのジャンク写真がなかった瞬間にhard reset head
できました。しかし、その時以来、私は何度もコミットし、コードに多くの変更を加えました。
あなたの場合、git filter-branch
の代わりに git rm
を使用してください。
git rm
はgitによって追跡されなくなるという意味でファイルを削除しますが、それらのイメージに対応する古いコミットオブジェクトは削除されないため、12GBのイメージに対応する以前のコミットをプッシュすることに固執します。
一方、git filter-branch
は、以前のすべてのコミットからもこれらのファイルを削除できるため、それらのいずれかをプッシュする必要がなくなります。
コマンドを使用する
git filter-branch --force --index-filter \
'git rm -r --cached --ignore-unmatch public/photos' \
--Prune-empty --tag-name-filter cat -- --all
フィルターブランチが完了したら、意図しないファイルが失われていないことを確認します。
.gitignoreルールを追加します
echo public/photos >> .gitignore
git add .gitignore && git commit -m "ignore rule for photos"
今プッシュを行う
git Push -f Origin branch
詳細については、 this 、 this 、および this を確認してください。安全のために、これらの手順を進める前に、システムにレポジトリのバックアップコピーを作成することをお勧めします。
元のエラーメッセージについては、git rm
を使用して既に追跡を解除しているために発生しています。したがって、gitは、追跡していないファイルを削除できないため不満を言っています。 詳細はこちら をお読みください。
非常に簡単な答えです。
ステップ1:
まず、git add .
またはgit add <filename>
を使用して、削除する未追跡ファイルを追加します。
ステップ2:
次に、コマンドgit rm -f <filename>
here rm= removeおよび-f= forcelyを使用して簡単に削除します。
ステップ1
ファイル名を.gitignore
ファイルに追加します。
ステップ2
git filter-branch --force --index-filter \
'git rm -r --cached --ignore-unmatch YOURFILE' \
--Prune-empty --tag-name-filter cat -- --all
ステップ
git Push -f Origin branch
@ muに感謝します
私の場合、このチェーンは機能します:
git rm -r WebApplication/packages
Git-dialogの確認がありました。 「y」オプションを選択する必要があります。
git commit -m "blabla"
git Push -f Origin <ur_branch>
git stash
仕事をしました、git rm
の代わりにrm
を使用して削除したファイルを復元しました。
最初に最後のハッシュをチェックアウトしましたが、それが必要だとは思いません。