Wprowadziłem kilka aktualizacji na moim komputerze lokalnym, wypchnąłem je do zdalnego repozytorium, a teraz próbuję pobrać zmiany na serwer i otrzymuję komunikat;
błąd: lokalne zmiany następujących plików zostaną zastąpione przez scalenie:
wp-content / w3tc-config / master.php
Zatwierdź zmiany lub schowaj je, zanim będzie można je scalić.
Więc pobiegłem
git checkout -- wp-content/w3tc-config/master.php
i spróbowałem jeszcze raz, a ja otrzymuję tę samą wiadomość. Zakładam, że w3tc
coś zmieniło się w pliku konfiguracyjnym na serwerze. Nie dbam o to, czy kopia lokalna czy zdalna trafi na serwer (chyba zdalna jest najlepsza), chcę tylko móc scalić resztę moich zmian (aktualizacje wtyczek).
Jakieś pomysły?
Odpowiedzi:
Nie można łączyć się z lokalnymi modyfikacjami. Git chroni przed utratą potencjalnie ważnych zmian.
Masz trzy opcje:
Zatwierdź zmianę za pomocą
Schowaj to.
Skrytka działa jak stos, w którym możesz przesuwać zmiany i przebijać je w odwrotnej kolejności.
Aby ukryć, wpisz
Wykonaj scalenie, a następnie wyciągnij skrytkę:
Odrzuć lokalne zmiany
za pomocą
git reset --hard
lub
git checkout -t -f remote/branch
Lub: Odrzuć lokalne zmiany dla określonego pliku
za pomocą
git checkout filename
źródło
git reset --hard
, możesz również usunąć nieśledzone pliki za pomocągit clean -dfx
git stash
nie przechowują plików, dla których nie ma historii. Jeśli więc masz pliki, które nie zostały jeszcze dodane, ale które zostałyby nadpisane lub „utworzone” przez scalanie, scalanie nadal będzie blokowane. W tej sytuacji możesz także użyćgit stash -u
do ukrywania niezaangażowanych plików. Lub możesz je po prostu usunąć!git clean -dfx
było okropnym pomysłem. Usunąłem niektóre pliki .gitignored, których tak naprawdę potrzebowałem.git reset --hard
nadal miał niezmergowane zmiany!Pierwsze polecenie tymczasowo przechowuje zmiany w skrytce i usuwa je z katalogu roboczego.
Drugie polecenie przełącza gałęzie.
Trzecie polecenie przywraca zmiany, które zostały zapisane w skrytce (
--index
opcja ta jest przydatna, aby upewnić się, że przemieszczane pliki są nadal przemieszczane).źródło
git stash pop
zamiastgit stash apply
. Ten pierwszy usuwa go ze skrytki, a drugi nadal go trzymaMożesz wypróbować jedną z następujących metod:
rebase
W przypadku prostych zmian spróbuj nałożyć na nie zmiany, ciągnąc zmiany, np
Więc po pobraniu zastosuje twoją bieżącą gałąź na górnej gałęzi.
Jest to równoznaczne z:
checkout master
,fetch
arebase origin/master
polecenia git.sprawdzić
Jeśli nie przejmujesz się lokalnymi zmianami, możesz przejść do innego oddziału tymczasowo (z użyciem siły) i przywrócić go z powrotem, np
Resetowanie
Jeśli nie przejmujesz się lokalnymi zmianami, spróbuj zresetować je do HEAD (stan pierwotny), np
Jeśli powyższe nie pomoże, mogą to być reguły w twoim pliku normalizacji git (
.gitattributes
), więc lepiej jest zatwierdzić to, co mówi. Lub twój system plików nie obsługuje uprawnień, więc musisz wyłączyćfilemode
w konfiguracji git.Powiązane: Jak wymusić polecenie „git pull”, aby zastąpić pliki lokalne?
źródło
git status
jakie zmiany wprowadzasz po ukryciu. Jeśli żadna odpowiedź nie pomoże, rozważ dodanie nowego pytania.Spróbuj tego
i spróbuj ponownie
źródło
git stash -u
, jak skomentowano na stackoverflow.com/questions/15745045/...Tak więc sytuacja, na którą wpadłem, była następująca:
z wyjątkiem, tuż przed tym, był zdalny: tak właściwie to:
To, co się działo, było (myślę, że nie w 100% pozytywne) hak po otrzymaniu git po uruchomieniu zaczął się psować z powodu zmian ruchu w zdalnym repozytorium serwera, które teoretycznie nie powinny były zostać dotknięte.
Więc to, co skończyło się na przeszukaniu przechwytywania po otrzymaniu i znalezieniu tego, to musiałem udać się do zdalnego repozytorium na serwerze i nastąpiła zmiana (która nie była w moim lokalnym repozytorium, która w rzeczywistości powiedział, że pasuje, nie ma zmian, nic do zatwierdzenia, na bieżąco itp.) Tak więc, podczas gdy na lokalnym, nie było żadnych zmian, na serwerze, zrobiłem
git checkout -- some/file.ext
a następnie lokalne i zdalne repozytoria faktycznie pasowały i mogłem kontynuuj pracę i wdrażaj. Nie do końca wiadomo, jak doszło do tej sytuacji, chociaż kilkudziesięciu programistów plus zmiany IT mogą mieć z tym coś wspólnego.źródło
OSTRZEŻENIE: Spowoduje to usunięcie nieśledzonych plików, więc nie jest to świetna odpowiedź na to pytanie.
W moim przypadku nie chciałem przechowywać plików, więc zadziałało to dla mnie:
Git 2.11 i nowsze:
Starsze Git:
Odniesienie: http://www.kernel.org/pub/software/scm/git/docs/git-clean.html
-x oznacza, że ignorowane pliki są również usuwane, a także pliki nieznane dla git.
-d oznacza usunięcie nieśledzonych katalogów oprócz nieśledzonych plików.
-f jest wymagane do wymuszenia uruchomienia.
źródło
Aby zachować rejestr nowo utworzonych plików podczas rozwiązywania tego problemu:
Jeśli masz nowo utworzone pliki , możesz utworzyć poprawkę lokalnych zmian, pobrać zdalne scalenia i zastosować poprawkę lokalną po zakończeniu zdalnego scalania, jak zdefiniowano krok po kroku poniżej:
git add .
git diff --cached > mypatch.patch
git reset --hard
git pull
git apply mypatch.patch
Git połączy zmiany i utworzy pliki .rej dla zmian, które nie zostały scalone.
Zgodnie z sugestią Anu, jeśli masz problemy ze stosowaniem łatki, spróbuj:
git apply --reject --whitespace=fix mypatch.patch
Ta odpowiedź git: patch nie stosuje szczegółowych rozmów na ten tematCiesz się dalszą pracą nad funkcją i po zakończeniu zatwierdź lokalne zmiany.
źródło
error: patch failed: yourfile.py:33 error: yourfile.py: patch does not apply
Wystąpił błąd :, wciąż mam plik mypatch.patch, ale nie wiem, dlaczego nie został zastosowany i straciłem zmiany !git apply --reject --whitespace=fix mypatch.patch
: odzyskałem moje zmiany, uff !!! [Dzięki] ( stackoverflow.com/a/15375869/6484358 )Pytanie o zatwierdzenie przed ściągnięciem
Jeśli potrzebne :
źródło
Dla mnie tylko
git reset --hard
działało.Zatwierdzenie nie było opcją, ponieważ nie było nic do popełnienia.
Składowanie nie było opcją, ponieważ nie było nic do ukrycia.
Wygląda jakby mogło być od wykluczonych plików w
.git/info/exclude
i pogit update-index --assume-unchanged <file>
„ed niektórych plików.źródło
W moim przypadku utworzyłem kopię zapasową, a następnie usunąłem plik, na który Git narzekał, popełnił, po czym mogłem w końcu sprawdzić inny oddział.
Następnie zastąpiłem plik, skopiowałem z powrotem do treści i kontynuowałem, jakby nic się nie stało.
źródło
Jest to prawdopodobnie spowodowane problemami z CRLF.
Zobacz: Dlaczego powinienem używać core.autocrlf = true w Git?
Użyj tego, aby pobrać i wymusić aktualizację:
źródło
Spróbowałem pierwszej odpowiedzi:
git stash
z najwyższym wynikiem, ale komunikat o błędzie wciąż się pojawiał, a potem znalazłem ten artykuł, aby zatwierdzić zmiany zamiast ukryć „Niechętne popełnienie”i komunikat o błędzie zniknął w końcu:
1:
git add .
2:
git commit -m "this is an additional commit"
3:
git checkout the-other-file-name
wtedy zadziałało. mam nadzieję, że ta odpowiedź pomoże. :)
źródło
Jeśli używasz rozszerzeń Git , powinieneś być w stanie znaleźć lokalne zmiany w
Working directory
sposób pokazany poniżej:Jeśli nie widzisz żadnych zmian, prawdopodobnie przyczyną jest niewłaściwy podmoduł. Sprawdź więc wszystkie elementy za pomocą ikony łodzi podwodnej, jak pokazano poniżej:
Po znalezieniu niezatwierdzonej zmiany:
Wybierz linię za pomocą
Working directory
, przejdź do zakładki Zróżnicowane , kliknij prawym przyciskiem myszy ikonę ołówka (lub+
lub-
), wybierz Resetuj, aby najpierw zatwierdzić lub zatwierdzić lub ukryć lub cokolwiek z tym zrobić.źródło
Dla mnie to zadziałało:
git reset --hard
i wtedy
git pull origin <*current branch>
po tym
git checkout <*branch>
źródło
Prawdopodobnie
mogłoby pomóc
źródło