git: przełącza gałąź i ignoruje wszelkie zmiany bez zatwierdzania

Pracowałem nad gałąź git i byłem gotowy do zatwierdzenia zmian, więc zrobiłem commit z użytecznym Komunikatem commit. Następnie z nieobecnością wprowadziłem drobne zmiany w kodzie, które nie są warte zachowania. Teraz chcę zmienić gałęzie, ale git daje mi,

Błąd: masz lokalne zmiany na "X"; nie można przełączać gałęzi.

Myślałem, że mogę zmieniać gałęzie bez angażowania się. Jeśli tak, to jak Mogę to skonfigurować? Jeśli nie, jak mam wyjść z tego problemu? Chcę zignoruj drobne zmiany bez zatwierdzania i po prostu zmień gałęzie.

Author: Zoe, 2009-08-20

9 answers

Do zmiany gałęzi potrzebny jest czysty stan. Kasowanie gałęzi będzie dozwolone tylko wtedy, gdy nie wpłynie to na " brudne pliki "(jako Charles Bailey uwagi w komentarzach).

W przeciwnym razie powinieneś:

  • Schowaj Twoją aktualną zmianę lub
  • reset --hard HEAD (Jeśli nie masz nic przeciwko utracie tych drobnych zmian) lub
  • checkout -f (podczas przełączania gałęzi postępuj, nawet jeśli indeks lub drzewo robocze różni się od głowy. To jest używane odrzucenie lokalnych zmian. )
 323
Author: VonC,
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-05-23 12:10:11

Jeśli chcesz odrzucić zmiany,

git checkout -- <file>
git checkout branch

Jeśli chcesz zachować zmiany,

git stash save
git checkout branch
git stash pop
 100
Author: Jamie Macey,
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-08-20 19:29:18

Cóż, powinno być

git stash save
git checkout branch
// do something
git checkout oldbranch
git stash pop
 55
Author: romerun,
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-10-11 08:48:17

Follow,

$: git checkout -f

$: git checkout next_branch
 13
Author: simplyharsh,
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-08-20 08:02:25

Zauważ, że jeśli połączyłeś zdalne gałęzie lub masz lokalne commity i chcesz wrócić do zdalnej głowicy, musisz to zrobić:

git reset --hard origin/HEAD

HEAD samo odnosi się tylko do lokalnego commit / merge -- kilka razy zapomniałem, że podczas resetowania i kończy się na "twoje repozytorium jest X commit przed.."kiedy w pełni zamierzałem zniszczyć wszystkie zmiany/commity i wrócić do zdalnej gałęzi.

 10
Author: ccliffe,
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-11-15 12:44:54

Jeśli wprowadziłeś zmiany w plikach, które Git również musi zmienić podczas przełączania gałęzi, nie pozwoli Ci to. Aby usunąć zmiany robocze, należy użyć:

git reset --hard HEAD

Wtedy będziesz mógł zmienić gałęzie.

 7
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
2009-08-20 08:01:15

Żadna z tych odpowiedzi mi nie pomogła, ponieważ nadal miałem niezabezpieczone pliki nawet po resecie i schowku. Musiałem zrobić:

git reset --hard HEAD
git clean -d -f
 2
Author: vishnu viswanath,
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-04-24 16:05:04

Przejście na nową gałąź tracącą zmiany:

git checkout -b YOUR_NEW_BRANCH_NAME --force

Przejście na istniejącą gałąź tracącą zmiany:

git checkout YOUR_BRANCH --force
 1
Author: Jorge Avila,
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-01 22:41:37

Zamknij terminal, usuń folder, w którym znajduje się twój projekt, następnie ponownie Klonuj swój projekt i voilá.

 1
Author: miguelacio,
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-12 19:24:01