W jaki sposób pliki .orig są sprawdzane w moim repozytorium git podczas scalania, które są teraz wyświetlane w zmodyfikowanym i nieśledzonym sektorze. Ale nie chcę już tych plików w moim repozytorium. Jak to zrobić.
modified: Gemfile.lock.orig
# modified: Gemfile.orig
# modified: app/assets/images/bg_required.png.orig
# modified: app/assets/javascripts/application.js.orig
etc...
Każda pomoc zostanie doceniona.
Odpowiedzi:
Najlepszym rozwiązaniem w tym przypadku jest uproszczenie i pozbycie się tych plików niezależnie od gita:
Alternatywnie w Windows / PowerShell możesz uruchomić następujące polecenie
źródło
git clean -df
tego nie robi. Dlaczego mielibyśmy ręcznie sprzątać śmieci, które zostawiają?Spróbuj
git clean
więcej informacji, które możesz znaleźć tutaj lub tutajźródło
git rm <filename>
a następnie zatwierdzić. po tym dodaj plik * .orig do git ignore.git clean -i
jest naprawdę fajne. wyświetli listę plików, które zostaną usunięte, oraz opcje postępowania z listą (filtrowanie listy, możliwość usunięcia wszystkiego na liście i kilka innych opcji).git clean -f -e '*.*' -e '!*.orig'
istnieje tylko wzorzec wykluczania, ale ma niewielką obsługę wzorców negatywnych. Możemy więc wykluczyć wszystkie pliki*.*
, a następnie zanegować wykluczenie tylko*.orig
plików.możesz to zrobić:
Aby uzyskać więcej informacji, zapoznaj się z sekcją Git Mergetool generuje niechciane pliki .orig
źródło
Możesz zignorować pliki używając .gitignore
Po prostu umieść * .orig na liście, jak pokazano tutaj
https://help.github.com/articles/ignoring-files
aby usunąć bieżące pliki, możesz utworzyć skrypt powłoki i uruchomić go z folderu projektu, jak poniżej
źródło
Niestety
git clean
nie działa dla mnie, ponieważ*.orig
dodałem do mojego globalnego pliku gitignore, więc są one również ignorowane podczas czyszczenia. Nawet uruchamianiegit clean -x
nie jest dobre, ponieważ nie chcę, aby wszystkie moje ignorowane pliki zostały usunięte.git clean -i
jest pomocna, ale naprawdę nie chcę przeglądać każdego pliku.Możemy jednak użyć wzorca wykluczania i zanegowania dopasowania. Podgląd za pomocą tego polecenia:
Następnie, gdy jesteś pewien, przekaż
force
flagę, aby naprawdę je usunąć:Na podstawie komentarza Leorleora
źródło
git rm Gemfile.lock.orig
i pozostałe pliki, których nie potrzebujesz.git commit --amend
Aby całkowicie usunąć te plamy,
git gc --prune=0 --aggressive
źródło
U mnie
git clean -f
usunięto wszystkie pliki * .oig. I zachowuje te, które były tam wcześniej.Tak to (prawie) wyglądało po scaleniu:
.idea/codeStyles/
istniał już przed scaleniem jako nieśledzony plik..idea/misc.xml.orig
(i wiele więcej) trzeba było usunąć.=> Używanie
git clean -f
:doprowadzony:
źródło
możesz po prostu to zrobić
git status -s | grep "\.orig$" | awk '{print $2}' | xargs -n1 -r echo rm
TL; DR;
git status -s
umożliwia pobranie wszystkich zmodyfikowanych / brakujących plików w odniesieniu do indeksugrep "\.orig$"
odfiltrować pliki, zachowując końcówkę „.orig”awk '{print $2}'
wyświetla nazwę pliku (pomijając informacje git np. A, M, ??)xargs -n1 -r echo rm
wypisuje polecenia usuwania dla każdego argumentu (-n1: pojedynczo i -r: pomiń, gdy jest puste) po prostu skopiuj i wklej polecenia, dwukrotnie sprawdzając pliki do usunięcia.źródło
git rm <file>
http://git-scm.com/docs/git-rm
Dodaj również pliki / katalogi, które chcesz zignorować, do pliku .gitignore.
źródło
git rm <file> <file>
Po prostu je wymień.git rm
, po prostu używajrm
zamiast tego