W SVN, bezpośrednie usunięcie czegoś z systemu plików (zamiast używania svn) powodowało mnóstwo kłopotów.
Nie stwierdziłem, że jest to problem podczas używania git
, ale zauważam, że git ma swoją własną rm
implementację ( git rm
).
Jaka jest różnica między rm
i git rm
?
git reset --hard
a następnie wykonać checkout mastera, aby wyjść z odłączonej głowy, ponieważ wiedziałem, że nie mam żadnych niezatwierdzonych zmian. Jeśli nie zatwierdziłeś zmian, możesz chcieć zrobić git stash, ale jestem stosunkowo nowy w git, więc nie znam dokładnego polecenia. Jeśli przyjechałeś tu w 2014 roku lub później, mam nadzieję, że ta odpowiedź była dla Ciebie przydatna.rm
(zamiastgit rm
) i usunąłem wiele plików przy jego użyciu, a teraz nie chcęgit
ich śledzić. Czy istnieje sposób na cofnięcie zmian? Chcę,git
aby moje zdjęcie zostałorm
usunięte, ponieważ nie używałemgit rm
w pierwszej kolejności.Usuwanie plików za pomocą
rm
nie jest problemem per se, ale jeśli potem chcesz potwierdzić, że plik został usunięty, będziesz musiał to zrobić igit rm
tak, więc równie dobrze możesz to zrobić w ten sposób od razu.Ponadto, w zależności od Twojej powłoki,
git rm
po usunięciu pliku nie otrzymasz uzupełniania tabulatorami, więc będziesz musiał samodzielnie przeliterować ścieżkę, podczas gdy jeśligit rm
plik nadal istnieje, uzupełnianie kart będzie działać normalnie.źródło
git rm
usunie plik z indeksu i katalogu roboczego (tylko z indeksu, jeśli był używany--cached
), tak aby usunięcie było przemieszczane do następnego zatwierdzenia.źródło
Jeśli jednak w końcu użyjesz rm zamiast git rm. Możesz pominąć dodawanie git i bezpośrednio zatwierdzić zmiany za pomocą:
git commit -a
źródło
Oto, jak możesz usunąć plik za pomocą,
rm -f
a następnie usunąć go z indeksu za pomocągit rm
Jednak możesz to wszystko zrobić za jednym razem, używając tylko
git rm
źródło
Kiedy używasz git rm, usunięcie będzie częścią twojego następnego zatwierdzenia. Więc jeśli chcesz wprowadzić zmianę, powinieneś użyć git rm
źródło
Dodając do odpowiedzi Andy'ego, istnieje dodatkowe narzędzie do
git rm
:Bezpieczeństwo :
git rm
zamiast tegorm
Git zablokuje usunięcie, jeśli wystąpi rozbieżność międzyHEAD
wersją pliku a indeksem pomostowym lub wersją drzewa roboczego. Ten blok jest mechanizmem zabezpieczającym , który zapobiega usuwaniu trwających zmian.Zabezpieczenia :
git rm --dry-run
. Ta opcja jest zabezpieczeniem, które wykonagit rm
polecenie, ale w rzeczywistości nie usunie plików. Zamiast tego wyświetli pliki, które by usunął.źródło