Dodałem przypadkowo ponad 9000 zdjęć do folderu mojego projektu. I popełnił ich. Następnie usunąłem je z dysku. Zobowiązany.
Teraz próbuję wypchnąć zmiany na serwer git. Ale trwa to zbyt długo i próbuje wysłać 12 Gb danych.
Sprawdziłem rozmiar plików na dysku i widzę, że .git
folder naprawdę zajmuje 12 GB.
Jak usunąć stamtąd zdjęcia ? Próbowałem git rm
, ale mi się nie udało:
❯ git rm public/photos
fatal: pathspec 'public/photos' did not match any files
Ponieważ już je usunąłem z dysku, ale nadal są w .git
folderze.
Próbowałem dodać public/photos
do .gitignore
:
public/photos/
*.zip
Ale bez rezultatu. Oczywiście mogłem hard reset head
do momentu, kiedy nie miałem tylu śmieciowych zdjęć w swoim projekcie. Ale od tego czasu popełniałem wiele razy i wprowadzałem wiele zmian w kodzie.
źródło
git add .gitignore && commit -m "ignore rule for photos"
byćgit add .gitignore && git commit -m "ignore rule for photos"
Bardzo prosta odpowiedź brzmi.
Krok 1:
Najpierw dodaj nieśledzone pliki, które chcesz usunąć:
za pomocą
git add .
lubgit add <filename>
.Krok 2:
Następnie usuń je łatwo, używając polecenia
git rm -f <filename>
tutaj rm = remove i -f = forcely.źródło
git filter-branch
jak wspomniano w innym miejscu.Krok 1
Dodaj nazwy plików do swojego
.gitignore
pliku.Krok 2
Krok 3
Wielkie dzięki dla @mu.
źródło
--ignore-unmatch
używanie tego zadziałało dla mnie
źródło
Te łańcuchy działają w moim przypadku:
git rm -r WebApplication/packages
Pojawiło się potwierdzenie git-dialog. Należy wybrać opcję „y”.
git commit -m "blabla"
git push -f origin <ur_branch>
źródło
wykonał zadanie, przywrócił pliki, które usunąłem, używając
rm
zamiastgit rm
.Najpierw sprawdziłem ostatni hash, ale nie sądzę, żeby to było wymagane.
źródło
Aby usunąć śledzony i stary zatwierdzony plik z gita, możesz użyć poniższego polecenia. Tutaj w moim przypadku chcę odśledzić i usunąć cały plik z
dist
katalogu.Następnie musisz dodać go do swojego,
.gitignore
aby nie był dalej śledzony.źródło
Miałem zduplikowany katalog (~ web / web) i usunąłem zagnieżdżony duplikat, gdy uruchomiłem
rm -rf web
w pierwszym folderze sieciowym.źródło