Cofnij git mv (zmień nazwę)


139

Jaki jest właściwy sposób na cofnięcie zmiany nazwy w git, na przykład:

git mv file1 file2

21
git mv file2 file1
— Bezczelna

@CanSpice: To jest poprawna odpowiedź; nic w tym bezczelnego.
— CB Bailey,

1
@Charles: Cóż, podałem to jako właściwą, bezczelną odpowiedź. :-)
— CanSpice

git mv file2 file1 Spodziewałeś się czegoś innego?
— Lakshman Prasad

Odpowiedzi:


230

Bezczelna odpowiedź:

git mv file2 file1

Automatycznie aktualizuje indeks starych i nowych ścieżek.

Sprawdź dokumentację git mv


4
załóżmy, że plik1 i plik2 znajdują się w bieżącym katalogu (.), to dlaczego git checkout .nie działa, nawet z -fopcją?
— ryenus

9
Wydaje się rzadkie, że rzeczy są tak intuicyjne, jak to :)
— ragerdl

@ryenus Musisz użyć git checkout -- ..
— Joseph238

Lol. To zabawne.
— Dmitriy Dokshin

Nie działało dla mnie podając błąd:, fatal: source directory is empty,tylko git reset --hardwykonałem pracę.
— mac13k

43

Jeśli nie dokonałeś żadnych innych zmian (które chcesz zachować) od ostatniego zatwierdzenia, możesz to zrobić

git reset --hard

6
Nie chciałbym nabrać nawyku używania git reset --hard. Samo przesunięcie go do tyłu wydaje mi się bezpieczniejszą opcją.
— osa

4
Pracował dla mnie. Chciałem cofnąć „git mv”, które 1) nie zostało jeszcze
— zatwierdzone

Jeśli masz inne zmiany, które chcesz zachować, spowoduje to ich zniszczenie.
— user151841

13
git reset HEAD file2

załatwił sprawę dla mnie


1
Jedynym problemem, jaki miałem z tą odpowiedzią, jest to, że pozostawiła kopie dla pliku2 na dysku.
— user52472

9

W moim przypadku przeniosłem cały folder, a potem zdałem sobie sprawę, że nie powinienem.

Bardzo podobała mi się odpowiedź @Dave Konopka, ale nie odniosłem większego sukcesu z takim podejściem (może moja wersja GIT (1.8.4)? Moje pliki nadal były wyświetlane jako usunięte. Miałem inne zmiany na stosie, których nie chciałem stracić (niestety).

Udało mi się to zrobić:

git reset moved_folder
git checkout original_folder

8

To zależy od tego, co chcesz osiągnąć. Jeśli chcesz, aby wyglądał tak, jakby plik nigdy nie był przenoszony, możesz zresetować (lub zmienić bazę) z powrotem do stanu sprzed przeniesienia. Jeśli nie obchodzi cię historia, po prostu cofnij ją.


4
Pierwszy działa dobrze, o ile nie nacisnąłeś swojego zobowiązania lub ktoś nie wyciągnął z Ciebie środków.
— CanSpice,

7

Jeśli przypadkowo zmieniłeś nazwę dużej liczby plików i chcesz wrócić do początku, usuń wszystkie pliki o zmienionych nazwach, które są wyświetlane jako addspod git statuspołączeniem.

Po usunięciu wszystkich zmienionych plików możesz uruchomić git checkout -- *lokalnie, aby przywrócić oryginalne nazwy plików.


4
git reset HEAD file2
git checkout -- file1
rm file2

Pierwsze polecenie usuwa ze sceny plik2, ale pozostawia jego kopię. Drugie polecenie przywraca oryginalny plik, a trzecie usuwa nowy plik.


1

Sztuczka, której użyłem, polegała na zrobieniu skrytki git, aby cofnąć wszystkie moje zmiany (w tym przywrócenie plików mv'd), a następnie usunąłem skrytkę za pomocą git stash drop.


0

Mniej przerażające jest przejście na najwyższy poziom repozytorium i wykonanie:

git reset
git checkout.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.