Jak mogę odrzucić nieakceptowane zmiany w Git?

Jak odrzucić zmiany w mojej kopii roboczej, których nie ma w indeksie?

 3954
git
Author: Mateusz Piotrowski, 2008-09-09

30 answers

Innym szybszym sposobem jest:

git stash save --keep-index --include-untracked

Nie musisz zawierać --include-untracked, jeśli nie chcesz być dokładny.

Potem możesz upuścić ten Schowek za pomocą git stash drop polecenia, jeśli chcesz.

 2225
Author: Greg Hewgill,
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-09-11 00:14:38

Dla wszystkich nieakstragowanych plików użyj:

git checkout -- .

Dla określonego pliku:

git checkout path/to/file/to/revert

Upewnij się, że na końcu podano okres.

 4301
Author: Tobi,
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-05-09 21:29:52

Wygląda na to, że kompletne rozwiązanie to:

git clean -df
git checkout -- .

git clean usuwa wszystkie Nie śledzone pliki (warning : while it won ' t delete ignored files wymienione bezpośrednio w .gitignore, może usuwać ignorowane pliki znajdujące się w folderach) i git checkout czyści wszystkie nieakceptowane zmiany.

 1642
Author: Mariusz Nowak,
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
2017-03-29 02:32:17

Sprawdza bieżący indeks bieżącego katalogu, odrzucając wszystkie zmiany w plikach z bieżącego katalogu w dół.

git checkout .

Lub ta, która sprawdza wszystkie pliki z indeksu, nadpisując działające pliki drzewa.

git checkout-index -a -f
 283
Author: CB Bailey,
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
2009-06-20 10:28:04
git clean -df

Czyści drzewo robocze, rekurencyjnie usuwając pliki, które nie są pod kontrolą wersji, zaczynając od bieżącego katalogu.

-d: Usuwanie nie śledzonych katalogów oprócz Nie śledzonych plików

-f: siła (może nie być konieczna w zależności od ustawienia clean.requireForce)

Uruchom git help clean, aby zobaczyć instrukcję

 218
Author: Elvis Ciotti,
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
2015-05-15 13:42:58

Moim ulubionym jest

git checkout -p

To pozwala selektywnie przywrócić kawałki.

Zobacz też:

git add -p
 85
Author: Ben,
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
2015-02-23 19:46:03

Ponieważ żadna odpowiedź nie sugeruje dokładnej kombinacji opcji, której używam, oto ona:

git clean -dfx
git checkout .

To jest tekst pomocy online dla używanych opcji git clean:

-d

Usuń Nie śledzone katalogi oprócz Nie śledzonych plików. Jeśli katalog nie śledzony jest zarządzany przez inne repozytorium Git, domyślnie nie jest usuwany. Użyj opcji -f dwa razy, jeśli naprawdę chcesz usunąć taki katalog.

-f

Jeśli zmienna konfiguracyjna Git clean.requireForce jest nie ustawione na false, Git clean odmówi usunięcia plików lub katalogów, chyba że poda -f, -n, lub -i. Git odmówi usunięcia katalogów z .git podkatalogu lub pliku, chyba że zostanie podana druga -f.

-x

Nie używaj reguł ignorowania z .gitignore (dla katalogu) i $GIT_DIR/info/exclude, ale nadal używaj reguł ignorowania podanych z opcjami -e. Pozwala to na usunięcie wszystkich nie śledzonych plików, w tym produktów kompilacyjnych. Może być stosowany (ewentualnie w połączeniu z git reset), aby utworzyć nieskazitelny katalog roboczy, aby przetestować czystą kompilację.

Również, git checkout . musi być zrobione w korzeniu repo.

 68
Author: Martin G,
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-17 23:50:38

Naprawdę uważam ten artykuł za pomocny w wyjaśnieniu, kiedy użyć jakiej komendy: http://www.szakmeister.net/blog/2011/oct/12/reverting-changes-git/

Jest kilka różnych przypadków:

  1. Jeśli nie ustawiłeś pliku, to używasz git checkout. Checkout "aktualizuje pliki w drzewie roboczym, aby pasowały do wersji w indeksie". Jeśli pliki nie zostały wystawione (aka dodane do indeksu)... to polecenie zasadniczo przywróci pliki do tego, co ostatnio commit był.

    git checkout -- foo.txt

  2. Jeśli plik został zainscenizowany, użyj git reset. Reset zmienia indeks, aby dopasować commit.

    git reset -- foo.txt

Podejrzewam, że używanie git stash jest popularnym wyborem, ponieważ jest trochę mniej niebezpieczne. Zawsze możesz do niego wrócić, jeśli przypadkowo zdmuchniesz za dużo podczas używania git reset. Reset jest domyślnie rekurencyjny.

Spójrz na artykuł powyżej, aby uzyskać więcej porad.

 53
Author: blak3r,
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
2013-05-13 05:41:57

Najprostszym sposobem jest użycie tego polecenia:

To polecenie jest używane do odrzucania zmian w katalogu roboczym -

git checkout -- .

Https://git-scm.com/docs/git-checkout

W Komendzie git, przechowywanie nie śledzonych plików odbywa się za pomocą:

git stash -u

Http://git-scm.com/docs/git-stash

 45
Author: A H M Forhadul Islam,
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
2017-10-23 09:30:10

Jeśli nie jesteś zainteresowany utrzymaniem zmian w unstaged (zwłaszcza jeśli zmiany w staged są nowymi plikami), uznałem to za przydatne:

git diff | git apply --reverse
 41
Author: Joshua Kunzmann,
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
2011-07-28 05:27:18

Jak wpisujesz git status, (Użyj " git checkout -- ..."aby odrzucić zmiany w katalogu roboczym) jest pokazany.

Np. git checkout -- .

 39
Author: Erdem ÖZDEMİR,
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
2017-01-07 01:28:18

git checkout -f


man git-checkout:

-f, --force

Podczas przełączania gałęzi postępuj, nawet jeśli indeks lub drzewo robocze różni się od głowy. Służy do odrzucania lokalnych zmian.

Podczas sprawdzania ścieżek z indeksu nie należy zawieść przy niezerowanych wpisach; zamiast tego niezerowane wpisy są ignorowane.

 38
Author: Bijan,
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-05-17 02:28:01

Możesz użyć git stash - jeśli coś pójdzie nie tak, nadal możesz wrócić ze schowka. Podobnie jak inna odpowiedź tutaj, ale ta również usuwa wszystkie nieakstragowane pliki, a także wszystkie nieakstragowane usuwa:

git add .
git stash

Jeśli sprawdzisz, że wszystko jest w porządku, wyrzuć Schowek:

git stash drop

Odpowiedź od Bilala Maqsooda z git clean też mi się sprawdziła, ale ze schowkiem mam większą kontrolę - jeśli zrobię sth przypadkowo, nadal mogę dostać swoje zmiany wstecz

UPDATE

Myślę, że jest jeszcze 1 zmiana (Nie wiem dlaczego to działało u mnie wcześniej):

git add . -A zamiast git add .

Bez -A usunięte pliki nie będą wyświetlane

 33
Author: Asped,
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
2015-10-21 08:37:52

Zamiast odrzucać zmiany, zresetowałem pilota do źródła. Uwaga-ta metoda polega na całkowitym przywróceniu folderu do folderu repo.

Więc robię to, aby upewnić się, że nie siedzą tam, gdy Git reset (później-wyklucza gitignores Na Origin / branchname)

Uwaga: Jeśli chcesz zachować pliki, które nie są jeszcze śledzone, ale nie w GITIGNORE, możesz pominąć ten krok, ponieważ spowoduje to usunięcie tych nie śledzonych plików, które nie znajdują się w zdalnym repozytorium (dzięki @XtrmJosh).

git add --all

Wtedy Ja

git fetch --all

Potem resetuję do origin

git reset --hard origin/branchname
To wszystko wróci do punktu wyjścia. Podobnie jak ponowne klonowanie gałęzi, zachowując wszystkie moje pliki z gitignored lokalnie i na miejscu.

Zaktualizowano za komentarz użytkownika poniżej: Zmiana, aby zresetować do dowolnej bieżącej gałęzi, na której jest użytkownik.

git reset --hard @{u}
 31
Author: Nick,
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-01-21 18:04:56

Próbowałem wszystkich powyższych rozwiązań, ale nadal nie mogłem pozbyć się nowych, nieakceptowanych plików.

Użyj git clean -f, aby usunąć te nowe pliki - z ostrożnością! zwróć uwagę na opcję force.

 25
Author: artur,
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
2011-10-14 21:07:27

Jeśli tylko chcesz usunąć zmiany w istniejących plikach, użyj checkout (udokumentowane tutaj ).

git checkout -- .
  • Żadna gałąź nie jest określona, więc sprawdza bieżącą gałąź.
  • myślnik podwójny (--) mówi Gitowi, że to, co następuje, powinno być traktowane jako drugi argument (path), że pominąłeś specyfikację gałęzi.
  • kropka (.) wskazuje wszystkie ścieżki.

Jeśli chcesz usunąć Pliki dodane od ostatniego commit, use clean (udokumentowane tutaj):

git clean -i 
  • opcja -i inicjuje interaktywne clean, aby zapobiec błędnym usunięciom.
  • kilka innych opcji jest dostępnych dla szybszego wykonania; zobacz dokumentację.

Jeśli chcesz przenieść zmiany do miejsca przechowywania w celu późniejszego dostępu, użyj stash (udokumentowane tutaj):

git stash
  • wszystkie zmiany zostaną przeniesione do schowka Git ' a, w celu późniejszego dostępu.
  • dostępnych jest kilka opcji dla bardziej niuansowego przechowywania; zobacz dokumentację.
 24
Author: jtheletter,
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-18 00:19:02

Po Prostu powiedz

git stash

Usunie wszystkie Twoje lokalne zmiany. Możesz również użyć później, mówiąc

git stash apply 

Lub git stash pop

 20
Author: piyushmandovra,
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
2015-06-30 22:12:32

Po prostu użyj:

git stash -u
Zrobione. Spokojnie.

Jeśli naprawdę zależy ci na stosie skrytek, możesz podążać za git stash drop. Ale w tym momencie lepiej używać (od Mariusza Nowaka):

git checkout -- .
git clean -df

Niemniej jednak, najbardziej lubię git stash -u, ponieważ "odrzuca" wszystkie śledzone i nie śledzone zmiany w tylko jednym poleceniu. Jednak git checkout -- . tylko odrzuca śledzone zmiany, i git clean -df tylko odrzuca niezabezpieczone zmiany... a wpisanie obu komend jest daleko za dużo pracy :)

 20
Author: Ben Wilde,
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-09-08 06:19:32

To działa nawet w katalogach, które są; poza normalnymi uprawnieniami git.

sudo chmod -R 664 ./* && git checkout -- . && git clean -dfx

Zdarzyło mi się ostatnio

 16
Author: GlassGhost,
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
2015-09-28 13:29:45
cd path_to_project_folder  # take you to your project folder/working directory 
git checkout .             # removes all unstaged changes in working directory
 14
Author: vivekporwal04,
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-05-31 10:04:10

Innym sposobem pozbycia się nowych plików, który jest bardziej szczegółowy niż git clean-df (pozwoli Ci pozbyć się niektórych plików, niekoniecznie wszystkich), jest dodanie nowych plików do indeksu, następnie stash, a następnie upuść stash.

Ta technika jest przydatna, gdy z jakiegoś powodu nie można łatwo usunąć wszystkich nie śledzonych plików za pomocą zwykłego mechanizmu (takiego jak rm).

 10
Author: tjb,
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-06-15 08:55:35

To, co następuje, jest tak naprawdę rozwiązaniem, jeśli pracujesz z forkiem repozytorium, gdzie regularnie synchronizujesz (np. pull request) z innym repo. Krótka odpowiedź: Usuń fork i refork, ale przeczytaj ostrzeżenia na github .

Miałem podobny problem, może nie identyczny, i z przykrością stwierdzam, że moje rozwiązanie nie jest idealne, ale ostatecznie skuteczne.

Często miałem takie komunikaty o statusie git (zawierające co najmniej 2/4 plików):

$ git status
# Not currently on any branch.
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   doc/PROJECT/MEDIUM/ATS-constraint/constraint_s2var.dats
#       modified:   doc/PROJECT/MEDIUM/ATS-constraint/parsing/parsing_s2var.dats
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   doc/PROJECT/MEDIUM/ATS-constraint/constraint_s2Var.dats
#       modified:   doc/PROJECT/MEDIUM/ATS-constraint/parsing/parsing_s2Var.dats

A keen eye zwróci uwagę, że te pliki mają dopplegangery, które są pojedynczą literą W przypadku wyłączenia. Jakoś, i nie mam pojęcia, co poprowadziło mnie w dół tej ścieżki, aby rozpocząć (ponieważ nie pracowałem z tymi plikami sam z upstream repo), zamieniłem te pliki. Wypróbuj wiele rozwiązań wymienionych na tej stronie (i innych stronach) nie wydaje się pomóc.

Udało mi się rozwiązać ten problem, usuwając moje rozwidlone repozytorium i wszystkie lokalne repozytoria i ponownie forkingując. Samo to nie wystarczyło; ) musiałem zmienić nazwy danych plików na nowe nazwy plików. tak długo, jak nie masz żadnej niezakontraktowanej pracy, żadnych wiki i żadnych problemów, które odbiegają od repozytorium, powinieneś być w porządku. Upstream może nie być z ciebie zadowolony, mówiąc co najmniej. Jeśli chodzi o mój problem, jest to niewątpliwie błąd użytkownika, ponieważ nie jestem tak biegły w git, ale fakt, że nie jest łatwy do naprawienia, wskazuje również na problem z git.

 9
Author: bbarker,
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-01-13 16:42:46

Moim zdaniem,

git clean -df
Powinno wystarczyć. Zgodnie z Dokumentacja Git na Git clean

Git-clean-Remove untracked files from the working tree

Opis

Czyści drzewo robocze przez rekurencyjne usuwanie plików, które nie są pod kontrolą wersji, począwszy od bieżącego katalogu.

Normalnie usuwane są tylko pliki nieznane Gitowi, ale jeśli opcja -x jest określony, ignorowane pliki są również usunięte. Może to na przykład, być przydatne, aby usunąć wszystkie produkty build.

Jeśli jest to opcjonalne ... podane są argumenty, tylko te ścieżki są dotknięte.

Opcje

- D usuwa nie śledzone katalogi oprócz Nie śledzonych plików. Jeśli katalog nie śledzony jest zarządzany przez inne repozytorium Git, jest to domyślnie nie jest usuwany. Użyj opcji-f dwa razy, jeśli naprawdę chcesz Usuń taki katalog.

- f -- force If the Git zmienna konfiguracyjna clean.requireForce nie jest ustawione na false, git clean odmówi uruchomienia, chyba że poda-f, - n lub-i.

 9
Author: Lahiru,
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 07:03:45

Bez względu na to, w jakim stanie jest Twój repo, zawsze możesz zresetować poprzedni commit:

git reset --hard <commit hash>

Spowoduje to odrzucenie wszystkich zmian wprowadzonych po zatwierdzeniu.

 9
Author: msangel,
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-01-29 16:29:26

Gdy chcesz przenieść skrytkę do kogoś innego:

# add files
git add .  
# diff all the changes to a file
git diff --staged > ~/mijn-fix.diff
# remove local changes 
git reset && git checkout .
# (later you can re-apply the diff:)
git apply ~/mijn-fix.diff
[[1]}[edytuj] jak skomentowano, można nazwać stashes. Cóż, użyj tego, jeśli chcesz podzielić się swoją skrytką;)
 7
Author: twicejr,
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
2015-04-20 10:39:40

Jeśli wszystkie pliki z poczekalnią zostały zatwierdzone, gałąź może być po prostu zresetowana np. z GUI za pomocą około trzech kliknięć myszką: gałąź, Reset, tak!

Więc to, co często robię w praktyce, aby przywrócić niechciane lokalne zmiany, To zatwierdzić wszystkie dobre rzeczy, a następnie zresetować gałąź.

Jeśli dobry materiał jest popełniony w jednym zatwierdzeniu, możesz użyć opcji "popraw ostatni zatwierdzony", aby przywrócić go do wystawiania lub odstawiania, jeśli chcesz popełnić to trochę inaczej.

Może nie jest to rozwiązanie techniczne, którego szukasz dla swojego problemu, ale uważam, że jest to bardzo praktyczne rozwiązanie. Umożliwia selektywne odrzucanie nieakceptowanych zmian, Resetowanie zmian, które Ci się nie podobają, i zachowywanie tych, które robisz.

Więc podsumowując, po prostu robię commit, branch reset i zmienić ostatni commit .

 6
Author: user3070485,
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
2015-09-04 09:56:53

Żadne z rozwiązań nie działa, jeśli po prostu zmieniono uprawnienia pliku (to jest na DOS/Windoze)

Mon 23/11/2015-15:16:34.80 C:\...\work\checkout\slf4j+> git status
On branch SLF4J_1.5.3
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   .gitignore
        modified:   LICENSE.txt
        modified:   TODO.txt
        modified:   codeStyle.xml
        modified:   pom.xml
        modified:   version.pl

no changes added to commit (use "git add" and/or "git commit -a")

Mon 23/11/2015-15:16:37.87 C:\...\work\checkout\slf4j+> git diff
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
diff --git a/LICENSE.txt b/LICENSE.txt
old mode 100644
new mode 100755
diff --git a/TODO.txt b/TODO.txt
old mode 100644
new mode 100755
diff --git a/codeStyle.xml b/codeStyle.xml
old mode 100644
new mode 100755
diff --git a/pom.xml b/pom.xml
old mode 100644
new mode 100755
diff --git a/version.pl b/version.pl
old mode 100644
new mode 100755

Mon 23/11/2015-15:16:45.22 C:\...\work\checkout\slf4j+> git reset --hard HEAD
HEAD is now at 8fa8488 12133-CHIXMISSINGMESSAGES MALCOLMBOEKHOFF 20141223124940 Added .gitignore

Mon 23/11/2015-15:16:47.42 C:\...\work\checkout\slf4j+> git clean -f

Mon 23/11/2015-15:16:53.49 C:\...\work\checkout\slf4j+> git stash save -u
Saved working directory and index state WIP on SLF4J_1.5.3: 8fa8488 12133-CHIXMISSINGMESSAGES MALCOLMBOEKHOFF 20141223124940 Added .gitignore
HEAD is now at 8fa8488 12133-CHIXMISSINGMESSAGES MALCOLMBOEKHOFF 20141223124940 Added .gitignore

Mon 23/11/2015-15:17:00.40 C:\...\work\checkout\slf4j+> git stash drop
Dropped refs/stash@{0} (cb4966e9b1e9c9d8daa79ab94edc0c1442a294dd)

Mon 23/11/2015-15:17:06.75 C:\...\work\checkout\slf4j+> git stash drop
Dropped refs/stash@{0} (e6c49c470f433ce344e305c5b778e810625d0529)

Mon 23/11/2015-15:17:08.90 C:\...\work\checkout\slf4j+> git stash drop
No stash found.

Mon 23/11/2015-15:17:15.21 C:\...\work\checkout\slf4j+> git checkout -- .

Mon 23/11/2015-15:22:00.68 C:\...\work\checkout\slf4j+> git checkout -f -- .

Mon 23/11/2015-15:22:04.53 C:\...\work\checkout\slf4j+> git status
On branch SLF4J_1.5.3
Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   .gitignore
        modified:   LICENSE.txt
        modified:   TODO.txt
        modified:   codeStyle.xml
        modified:   pom.xml
        modified:   version.pl

no changes added to commit (use "git add" and/or "git commit -a")

Mon 23/11/2015-15:22:13.06 C:\...\work\checkout\slf4j+> git diff
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
diff --git a/LICENSE.txt b/LICENSE.txt
old mode 100644
new mode 100755
diff --git a/TODO.txt b/TODO.txt
old mode 100644
new mode 100755
diff --git a/codeStyle.xml b/codeStyle.xml
old mode 100644
new mode 100755
diff --git a/pom.xml b/pom.xml
old mode 100644
new mode 100755
diff --git a/version.pl b/version.pl
old mode 100644
new mode 100755

Jedynym sposobem, aby to naprawić, jest ręczne zresetowanie uprawnień do zmienionych plików:

Mon 23/11/2015-15:25:43.79 C:\...\work\checkout\slf4j+> git status -s | egrep "^ M" | cut -c4- | for /f "usebackq tokens=* delims=" %A in (`more`) do chmod 644 %~A

Mon 23/11/2015-15:25:55.37 C:\...\work\checkout\slf4j+> git status
On branch SLF4J_1.5.3
nothing to commit, working directory clean

Mon 23/11/2015-15:25:59.28 C:\...\work\checkout\slf4j+>

Mon 23/11/2015-15:26:31.12 C:\...\work\checkout\slf4j+> git diff

 5
Author: Malcolm Boekhoff,
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
2015-11-23 04:30:57

Możesz utworzyć własny alias, który opisuje jak to zrobić w sposób opisowy.

Używam następnego aliasu do odrzucania zmian.


Odrzuć zmiany w pliku(liście) w drzewie roboczym

discard = checkout --

Następnie możesz użyć go jako next, aby odrzucić wszystkie zmiany:

discard .

Lub tylko Plik:

discard filename

W przeciwnym razie, jeśli chcesz odrzucić wszystkie zmiany, a także pliki, które nie są śledzone, używam kombinacji checkout i clean:

Wyczyść i odrzuć zmiany i untracked files in working tree

cleanout = !git clean -df && git checkout -- .

Więc użycie jest proste jak następne:

cleanout

Teraz jest dostępny w następnym repo Github, który zawiera wiele aliasów:

 5
Author: Pau,
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
2017-06-05 04:51:09

Jeśli jesteś w przypadku podmodułu i żadne inne rozwiązania nie działają spróbuj:

  • Aby sprawdzić w czym jest problem (może "brudny" przypadek) użyj:

    git diff

  • Aby usunąć Schowek

    git submodule update

 5
Author: onalbi,
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
2017-07-18 12:22:21

Miałem dziwną sytuację, w której plik jest zawsze nieczytelny, pomaga mi to rozwiązać.

Git rm .gitattributes
git add-a
git reset --hard

 5
Author: SDV,
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
2017-07-18 12:23:33