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 jak git pull -f, ale nic nie działa.

Żeby było jasne, chcę tylko nadpisać konkretne zmiany, nie wszystko.

Author: Peter Mortensen, 2013-01-14

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:

  1. Zatwierdź wszystko, czego nie chcesz nadpisać i użyj powyższej metody do reszty.

  2. Użyj git checkout path/to/file/to/revert dla zmian, które chcesz nadpisać. Upewnij się, że plik nie jest przechowywany przez git reset HEAD path/to/file/to/revert.

 497
Author: Daniel Hilgarth,
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
 351
Author: mae,
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
 290
Author: kravits88,
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
 77
Author: Aftershock,
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ć:

  1. git stash save
  2. git merge origin/master
  3. git stash pop
 73
Author: Suneel Kumar,
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
 53
Author: pabloasc,
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

 47
Author: Brian Knoblauch,
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:

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. git checkout -b newbranch
 20
Author: Nikhil K 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
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.

 13
Author: Jeremy Holovacs,
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.

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

 9
Author: kenorb,
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):

Tutaj wpisz opis obrazka

Kiedy próbuję aby ściągnąć zdalne zmiany dostaję błąd:

Tutaj wpisz opis obrazka

Te zmiany nie przecinają się ze zmianami lokalnymi:

Tutaj wpisz opis obrazka

Więc kiedy pull --rebase --autostash lokalne zmiany zapisywane i stosowane bez żadnego problemu automatycznie

Tutaj wpisz opis obrazka

Teraz moje lokalne zmiany są trochę niższe: Tutaj wpisz opis obrazka

 9
Author: Eugen Konkov,
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.

 8
Author: BSB,
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.

 6
Author: Yamen Ashraf,
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
 5
Author: Deepika Patel,
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
 5
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-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
 5
Author: Gajen Sunthara,
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.

 5
Author: STK,
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.

 3
Author: Will Vousden,
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.
 3
Author: YanQing,
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
 3
Author: Jackkobec,
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
}
 3
Author: ASR,
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

 2
Author: ,
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-06-23 20:36:03

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.

 1
Author: Dmitry,
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;

  1. najpierw wykonałem Undo commit na moim rozwiązaniu.
  2. potem zrobiłem proces Git pull.

Mam nadzieję, że to pomoże!

 1
Author: AJ Macapaz,
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.

 1
Author: TaQuangTu,
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.
 1
Author: Milad Safaei,
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)

 1
Author: Ali Kleit,
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.
 0
Author: user60561,
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.

 0
Author: Munichong,
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