git cofa wszystkie niezasłużone lub niezapisane zmiany
Próbuję cofnąć wszystkie zmiany od ostatniego commita. Próbowałem git reset --hard
i git reset --hard HEAD
po obejrzeniu tego postu . Odpowiadam głową jest teraz na 18c3773... ale kiedy patrzę na moje lokalne źródło, wszystkie pliki nadal tam są. Co przegapiłem?
6 answers
-
To usunie wszystkie pliki, które możesz umieścić z
git add
:git reset
-
Spowoduje to odwrócenie wszystkich lokalnych niezakontraktowanych zmian (powinny być wykonywane w repo root):
git checkout .
Możesz także przywrócić niezatwierdzone zmiany tylko do określonego pliku lub katalogu:
git checkout [some_dir|file.txt]
Jeszcze jeden sposób na przywrócenie wszystkich niezatwierdzonych zmian (dłuższe do typu, ale działa z dowolnego podkatalogu):
git reset --hard HEAD
-
Spowoduje to usunięcie wszystkich lokalnych plików, które nie są śledzone, więc pozostały tylko Git śledzone pliki:
git clean -fdx
Ostrzeżenie:
-x
usunie również wszystkie ignorowane pliki, w tym te określone przez.gitignore
! Możesz użyć-n
do podglądu plików do usunięcia.
Podsumowując: wykonywanie poniższych poleceń jest w zasadzie równoważne z fresh git clone
z oryginalnego źródła (ale nie pobiera niczego ponownie, więc jest znacznie szybsze):
git reset
git checkout .
git clean -fdx
Typowe użycie tego byłoby w skryptach budowania, gdy musisz upewnić się, że twoje drzewo jest absolutnie czyste - nie ma żadnych modyfikacji lub lokalnie utworzonych plików obiektowych lub artefaktów, i chcesz, aby działało bardzo szybko i nie ponownie sklonować całego repozytorium za każdym razem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-08 21:31:24
Jeśli chcesz "cofnąć " wszystkie niezatwierdzone zmiany po prostu uruchom:
git stash
git stash drop
Jeśli masz jakieś pliki nie śledzone (sprawdź przez uruchomienie git status
), mogą one zostać usunięte przez uruchomienie:
git clean -fdx
git stash
tworzy nowy schowek, który stanie się skrytką @{0}. Jeśli chcesz najpierw sprawdzić, możesz uruchomić git stash list
, aby zobaczyć listę swoich staszy. Będzie to wyglądało mniej więcej tak:
stash@{0}: WIP on rails-4: 66c8407 remove forem residuals
stash@{1}: WIP on master: 2b8f269 Map qualifications
stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders
stash@{3}: WIP on blogit: c9bd270 some changes
Każdy schowek jest nazwany po poprzednim Messie commit.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-18 20:59:59
Istnieje również git stash
- który "zatrzymuje" lokalne zmiany i może zostać ponownie zastosowany w późniejszym czasie lub upuszczony, jeśli nie jest już wymagany
Więcej informacji o przechowywaniu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-28 21:17:00
Używam source tree.... Możesz cofnąć wszystkie niezarejestrowane zmiany w 2 prostych krokach:
1) wystarczy zresetować status pliku obszaru roboczego
2) Wybierz wszystkie pliki unstage( polecenie + a), kliknij prawym przyciskiem myszy i wybierz Usuń
To takie proste: d
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-14 17:19:58
Dla tych, którzy dotarli tutaj szukając, czy mogą cofnąć git clean -f -d
, przez co plik utworzony w eclipse został usunięty,
Możesz zrobić to samo z interfejsu użytkownika, używając opcji "Przywróć z lokalnej historii" dla ref: Przywróć z lokalnej historii
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-17 11:32:11
Stany przechodzące z jednego commita do nowego commita
0. last commit,i.e. HEAD commit
1. Working tree changes, file/directory deletion,adding,modification.
2. The changes are staged in index
3. Staged changes are committed
Akcja dla zmiany stanu
0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"
Sprawdzanie różnic
0->1: git diff
0->2: git diff --cached
0->1, and 0->2: git diff HEAD
last last commit->last commit: git diff HEAD^ HEAD
Przywróć do ostatniego zatwierdzenia
2->1: git reset
1->0: git checkout . #only for tracked files/directories(actions include modifying/deleting tracked files/directories)
1->0: git clean -fdx #only for untracked files/directories(action includes adding new files/directories)
2->1, and 1->0: git reset --hard HEAD
Odpowiednik git clone, bez ponownego pobierania czegokolwiek
git reset; git checkout .; git clean -fdx
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-23 18:06:21