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?

Author: commonSenseCode, 2012-12-29

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.

 1153
Author: mvp,
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.

 106
Author: Abram,
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

 15
Author: keshav,
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

Tutaj wpisz opis obrazka 2) Wybierz wszystkie pliki unstage( polecenie + a), kliknij prawym przyciskiem myszy i wybierz Usuń

Tutaj wpisz opis obrazka

To takie proste: d

 11
Author: user1872384,
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

 4
Author: Abdul Rahman K,
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
 2
Author: Zii,
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