Jak zignorować błąd w 'git pull', że moje lokalne zmiany zostaną nadpisane przez merge?
Jak zignorować poniższy komunikat o błędzie w Git pull?
Twoje lokalne zmiany w następujących plikach zostaną nadpisane przez merge
A jeśli ja chcę nadpisać je?
Próbowałem takich rzeczy jakgit pull -f
, ale nic nie działa.
Żeby było jasne, chcę tylko nadpisać konkretne zmiany, nie wszystko.
30 answers
Jeśli chcesz usunąć wszystkie lokalne zmiany-w tym pliki, które nie są śledzone przez git - z twojej kopii roboczej, po prostu ukryj je:
git stash push --include-untracked
Jeśli już ich nie potrzebujesz, teraz możesz upuścić ten Schowek: {]}
git stash drop
Jeśli nie chcesz ukrywać zmian, które już wstawiłeś - np. za pomocą git add
- Dodaj opcję --keep-index
. Zauważ jednak, że to nadal uniemożliwi scalanie, jeśli te zmiany etapowe zderzą się z tymi z pierwotnego źródła.
Jeśli chcesz tylko nadpisać konkretne części twoich lokalnych zmian, są dwie możliwości:
Zatwierdź wszystko, czego nie chcesz nadpisać i użyj powyższej metody do reszty.
Użyj
git checkout path/to/file/to/revert
dla zmian, które chcesz nadpisać. Upewnij się, że plik nie jest przechowywany przezgit reset HEAD path/to/file/to/revert
.
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
2020-03-08 10:21:12
W porządku z pomocą pozostałych dwóch odpowiedzi wymyśliłem bezpośrednie rozwiązanie:
git checkout HEAD^ file/to/overwrite
git pull
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-01-14 14:04:31
To działa dla mnie, aby nadpisać wszystkie lokalne zmiany i nie wymaga tożsamości:
git reset --hard
git pull
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-02 08:46:57
Oto rozwiązanie, które odrzuca zmiany:
git reset file/to/overwrite
git checkout file/to/overwrite
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-09-27 11:45:23
Możesz albo zatwierdzić zmiany przed połączeniem, albo je ukryć:
git stash save
git merge origin/master
git stash pop
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-22 08:12:09
Jeśli chcesz odrzucić lokalne zmiany w jednym pliku, możesz wykonać następujące czynności:
git checkout -- <file>
Wtedy możesz nadpisać plik [s] najnowszą wersją wykonując tylko:
git pull
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
2019-02-11 14:01:11
Tak wiele odpowiedzi tutaj, że nienawidzę dodawać kolejne, ale wszystkie powyższe są clunkier niż muszą być. Muszę to robić cały czas, ponieważ Git wydaje się być zdezorientowany i mówi, że zmodyfikowałem pliki, które się nie zmieniły (nie mogę przywrócić, ponieważ się nie zmieniły, ale nie mogę wyciągnąć, ponieważ rzekomo się zmieniły) najprostsze i najszybsze, jakie do tej pory znalazłem to:
git stash
git stash drop
git pull
Zawiadomienie: local zmiany zostaną utracone
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
2020-07-04 16:43:27
Jeśli Twoje repozytorium zawiera kilka plików, które zostały usunięte z master
:
git checkout master
git fetch origin
git reset --hard origin/master
git checkout -b newbranch
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-22 11:09:44
Czasami nic z tych rzeczy nie działa. Irytujące, ze względu na to, co myślę, że LF zadziała, to usunięcie Plików, następnie ściągnięcie. Nie żebym polecał To rozwiązanie, ale jeśli plik nie istnieje, git nie poinformuje cię, że Twoje zmiany (które mogą nawet nie być zmianami) zostaną nadpisane i pozwoli Ci kontynuować.
Używaj na własne ryzyko.
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-08-20 18:37:29
git stash save --keep-index
nie zadziałało na mnie.
Poniższe polecenie działało zgodnie z oczekiwaniami.
git reset --hard
git pull
Zastępuje wszystkie lokalne zmiany, jeśli ich nie potrzebujesz.
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-20 07:03:22
W ostatnim Git, możesz dodać -r
/--rebase
na pull
polecenie rebase bieżącej gałęzi na górze gałęzi upstream Po pobraniu. Ostrzeżenie powinno zniknąć, ale istnieje ryzyko, że pojawią się konflikty, które będziesz musiał rozwiązać.
Alternatywnie możesz wymeldować inną gałąź z siłą, a następnie wrócić do master
ponownie, np.:
git checkout origin/master -f
git checkout master -f
Następnie pociągnij ponownie jak zwykle:
git pull origin master
Korzystanie z tej metody może zaoszczędzić czas od przechowywania (git stash
) i potencjalne problemy z uprawnieniami, Resetowanie plików (git reset HEAD --hard
), usuwanie plików (git clean -fd
) itp. Również powyższe jest łatwiejsze do zapamiętania.
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-28 00:11:23
TL; DR;
git pull --rebase --autostash
-r, --rebase[=false|true|merges|preserve|interactive] When true, rebase the current branch on top of the upstream branch after fetching. If there is a remote-tracking branch corresponding to the upstream --autostash, --no-autostash Before starting rebase, stash local modifications away if needed, and apply the stash entry when done
Nie wiem, dlaczego jeszcze na to nie udzielono odpowiedzi, ale rozwiązanie, jak widzicie, jest proste. Wszystkie odpowiedzi sugerują to samo: aby usunąć / zapisać swoje lokalne zmiany i zastosować je pod prąd, a następnie (jeśli save
) zastosować swoje lokalne zmiany na górze.
Co git pull --rebase --autostash
robi krok po kroku:
1. your local changes saved by `--autostash`
2. your local commits saved by `--rebase`
3. commits from upstream applied to your branch
4. your local commits are restored on top of upstream
5. your local changes are restored to working directory
Moja sprawa (prawdopodobnie twoja też):
Mam zmiany lokalne (zmiany w katalogu roboczym):
Kiedy próbuję aby ściągnąć zdalne zmiany dostaję błąd:
Te zmiany nie przecinają się ze zmianami lokalnymi:
Więc kiedy pull --rebase --autostash
lokalne zmiany zapisywane i stosowane bez żadnego problemu automatycznie
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
2020-02-11 15:48:00
Problem polega na tym, że dokonałeś zmian lokalnie w plikach i te same pliki istnieją ze zmianami w repozytorium Git, więc przed pull / push będziesz potrzebował stash lokalnych zmian:
Aby nadpisać lokalne zmiany pojedynczego pliku:
git reset file/to/overwrite
git checkout file/to/overwrite
Aby nadpisać wszystkie lokalne zmiany (zmiany we wszystkich plikach):
git stash
git pull
git stash pop
Również ten problem może być spowodowany tym, że znajdujesz się na gałęzi, która nie jest połączona z gałęzią master.
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-27 12:48:51
git reset --hard && git clean -df
Uwaga: spowoduje to zresetowanie i usunięcie wszystkich nie śledzonych plików.
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
2019-09-29 09:16:59
Możesz użyć tego do nadpisania pliku
git checkout file_to_overwrite
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-27 10:06:42
Najlepszym sposobem rozwiązania tego problemu jest:
git checkout -- <path/file_name>
Następnie możesz nadpisać plik przez:
git pull origin master
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-04-12 09:19:18
Pomogło mi to odrzucić zmiany na zdalnym serwerze live i pobrać je z kontrolki źródłowej GitHub:
git reset --hard
git pull origin master
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-22 11:12:28
Oto moja strategia rozwiązania problemu.
Problem Statement
Musimy wprowadzić zmiany w więcej niż 10 plikach. Próbowaliśmy PULL (git pull origin master)
, ale Git krzyknął:
Błąd: Twoje lokalne zmiany w następujących plikach zostaną nadpisane przez scalanie: proszę, zatwierdź zmiany lub schowaj je, zanim będziesz mógł / align = "left" /
Próbowaliśmy wykonać commit
, a potem pull
, ale też nie zadziałały.
Rozwiązanie
We w rzeczywistości były w etapie dirty , Ponieważ pliki były w "Staging Area" vel "Index Area", a niektóre były w " Head Area "vel"local Git directory". I chcieliśmy wyciągnąć zmiany z serwera.
Sprawdź ten link, aby uzyskać informacje na temat różnych etapów Gita w jasny sposób: GIT Stages
Wykonaliśmy następujące kroki
-
git stash
(dzięki temu nasz katalog roboczy jest czysty. Twoje zmiany są przechowywane na stack by Git). - W tym celu należy pobrać zmiany z serwera.]}
-
git stash apply
(zastosowano wszystkie zmiany ze stosu) -
git commit -m 'message'
(popełniono zmiany) - Na serwerze nie ma żadnych zmian.]}
-
git stash drop
(upuść stos)
Zrozummy, kiedy i dlaczego trzeba przechowywać
Jeśli znajdujesz się w stanie dirty , oznacza to, że dokonujesz zmian w swoich plikach, a następnie jesteś zmuszony, z jakiegokolwiek powodu, do pull or switch to another branch for some very pilny work, so at this point you can ' t pull or switch until you commit your change. Polecenie stash
jest tutaj jako pomocna dłoń.
Z książki ProGIT , wydanie II:
Często, gdy pracujesz nad częścią swojego projektu, rzeczy są w niechlujny stan i chcesz przełączyć gałęzie na trochę do pracy coś innego. Problem w tym, że nie chcesz popełnić połowa roboty, żebyś mógł wrócić do tego punktu później. Na odpowiedzią na ten problem jest polecenie git stash. Stashing takes the brudny stan twojego katalogu roboczego – czyli Twój zmodyfikowany plików i wystawionych zmian – i zapisuje je na stosie niedokończonych zmiany, które możesz zastosować ponownie w dowolnym momencie.
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-22 11:16:16
Jeśli chcesz nadpisać konkretne zmiany, musisz w jakiś sposób powiedzieć, które z nich chcesz zapomnieć.
Możesz spróbować selektywnie schować zmiany, które chcesz porzucić, używając git stash --patch
, a następnie upuścić ten Schowek za pomocą git stash drop
. Następnie możesz pobrać zdalne zmiany i połączyć je w normalny sposób.
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-01-14 12:21:46
Jeśli chcesz zachować zmiany produkcyjne na serwerze, po prostu połącz się z nową pozycją konfiguracyjną. Metoda przetwarzania jest następująca:
git stash
git pull
git stash pop
Może nie wykonujesz wszystkich operacji. Możesz wiedzieć, co możesz zrobić dalej.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-22 11:21:31
Najprostszym rozwiązaniem jest:
git reset --hard && git pull
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
2019-08-30 00:56:08
Błąd "Twoje lokalne zmiany w następujących plikach zostaną nadpisane przez scalenie" pojawia się, ponieważ masz pewne zmiany w lokalnym repo, które nie zostały jeszcze zatwierdzone, więc przed pobraniem ze zdalnego repo po prostu zatwierdź zmiany w lokalnym repo.
Powiedzmy, że Twój zdalny repo ma jakąś gałąź xyz i chcesz, aby zdalna gałąź repo xyz została scalona w (skopiowaną do) lokalną gałąź repo xyz,
{
git checkout xyz //check out to the respective branch in local repo
git commit -m "commiting message" //commit changes if any, in local repo branch xyz
git pull //it pulls remote xyz branch into local xyz branch
}
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
2019-10-23 18:05:32
Miałem specjalny przypadek tego: miałem Plik z -- assume-unchanged na nim. Było to trudne do zlokalizowania, ponieważ polecenie git status
nie pokazywało żadnych zmian
Ignorowałem plik w repo i kiedy zrobiłem git pull upstream master
otrzymałem następujący błąd:
Błąd: Twoje lokalne zmiany w następujących plikach zostaną nadpisane przez scalanie: myfile.js Proszę zatwierdź zmiany lub ukryj je przed połączeniem. Przerywanie
Aby go rozwiązać zrobiłem następujące
git update-index --no-assume-unchanged myfile.js
Potem zrobiłem git status
i dostałem tę wiadomość
Na gałęzi master twoja gałąź jest za 'origin/master' przez 4 commity, i może być szybkie przekierowanie. (użyj "git pull", aby zaktualizować swój lokalny branch)
Zmiany nie wystawione dla commit: (użyj "git add ..."do aktualizacji co zostanie popełnione) (użyj "git checkout -- ..."do wyrzucenia zmiany w katalogu roboczym)
Modified: myfile.js
Brak zmian w zatwierdzeniu (użyj "git add" i/lub "git commit-a")
Potem zrobiłem git checkout myfile.js
a potem git pull upstream master
. Tym razem operacja git pull zakończyła się sukcesem.
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-14 14:43:59
Natknąłem się na to, wyciągając z mistrza.
Sposób, w jaki sobie z tym poradziłem, używając Visual Studio;
- najpierw wykonałem Undo commit na moim rozwiązaniu.
- potem zrobiłem proces Git pull.
Mam nadzieję, że to pomoże!
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-30 13:39:15
Próbowałem i to z powodzeniem, przed wyciągnięciem, niech zatwierdzić wszystkie pliki, które nie zostały popełnione, wtedy nie otrzymasz tych wiadomości od AS.
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-21 06:02:51
Jestem nowy w git i nie wiem, czy moje rozwiązanie jest dobrym pomysłem.
Przetestowałem wszystkie odpowiedzi i żadna z nich nie zadziałała na mnie!
Ale znalazłem inne rozwiązanie:
1. Backup both of local and repository versions of the file.
2. Delete the file from repository.
3. git add .
4. git commit
5. git push
Mam nadzieję, że to pomoże.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
2019-10-02 17:54:36
Moim rozwiązaniem było delete
Pliki spoza IDE, które zostaną nadpisane, a następnie pull
.
(zawsze możesz wykonać kopię zapasową i ręcznie połączyć nieprzetworzone dane)
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
2020-02-09 12:00:13
Jeśli ten błąd jest spowodowany zakończeniami linii,
git add
git checkout mybranch
Zadziała. Nie jestem pewien, dlaczego to działa.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-08 14:38:40
Dla Pycharm, możesz wykonać Git-- > Revert, a następnie pull.
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-23 21:53:02