Używam Git 1.7.4.1. Chcę pobrać najnowszą wersję mojego kodu z repozytorium, ale dostaję błędy ...
$ git pull
….
M selenium/ant/build.properties
….
M selenium/scripts/linux/get_latest_updates.sh
M selenium/scripts/windows/start-selenium.bat
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>' as appropriate to mark resolution, or use 'git commit -a'.
Usunąłem lokalne kopie plików, na które narzeka narzędzie, ale nadal pojawiają się błędy. Jak sprawdzić najnowszą wersję ze zdalnego repozytorium? - Dave
git fetch
najpierw. Nie dostaję konfliktów, ale właśnie w ten sposób otrzymałem najnowszą wersję kodu.Odpowiedzi:
Jeśli nie przejmujesz się lokalnymi zmianami (w tym nieśledzonymi lub wygenerowanymi plikami lub pod-repozytoriami, które akurat tu są) i po prostu potrzebujesz kopii z repozytorium:
Ponownie spowoduje to zniszczenie wszelkich zmian wprowadzonych lokalnie, więc używaj ich ostrożnie. Zastanów się,
rm -Rf
kiedy to robisz.źródło
git clean -f
nie jest tak naprawdę częścią odpowiedzi. Usunie pliki, które nie są przechowywane w repozytorium (np. W moim przypadku pliki dziennika); nie musisz tego robić, abygit pull
znów zacząć działać,git reset --hard HEAD
wystarczy.git clean -f
jest to ważne, jeśli chcesz naprawdę posprzątać repozytorium. Jest to odpowiednik wykonania polecenia „Usuń wszystko z folderu -> Pobierz najnowszą wersję / Pobierz konkretną” w programie TFS iw moim przypadku tego właśnie chciałem.Przypadek 1: Nie przejmuj się lokalnymi zmianami
Rozwiązanie 1: Pobierz najnowszy kod i zresetuj kod
Rozwiązanie 2: Usuń folder i sklonuj ponownie: D
Przypadek 2: Dbaj o lokalne zmiany
Rozwiązanie 1: brak konfliktów z nową wersją online
zgłosi coś takiego:
Następnie pobierz najnowszą wersję
Rozwiązanie 2: koliduje z nową wersją online
zgłosi coś takiego:
Zatwierdź lokalne zmiany
Spróbuj uzyskać zmiany (nie powiedzie się)
zgłosi coś takiego:
Otwórz plik konfliktu i napraw konflikt. Następnie:
zgłosi coś takiego:
Więcej informacji: Jak użyć „git reset --hard HEAD”, aby powrócić do poprzedniego zatwierdzenia?
źródło
Podejrzewam, że mogło się zdarzyć, że usunąłeś zmodyfikowane pliki (ponieważ nie przejmowałeś się tymi zmianami), a teraz git przyjmuje zmianę za zmianę.
Oto podejście, które przenosi zmiany z kopii roboczej do „skrytki” (możliwe do odzyskania, jeśli rzeczywiście okaże się, że kiedykolwiek będziesz ich potrzebować), dzięki czemu możesz pobrać najnowsze zmiany z góry.
Jeśli kiedykolwiek chcesz odzyskać swoje pliki (potencjalne konflikty z wcześniejszymi zmianami i wszystkim), uruchom a,
git stash apply
aby przykleić te zmiany do kodu. W ten sposób masz podejście „cofnij”.źródło
git stash pop
chyba że chcesz mieć historię swoichNajpierw musisz scalić swoje pliki. Wykonaj a,
git status
aby zobaczyć, jakie pliki należy scalić (oznacza to, że musisz najpierw rozwiązać konflikty). Gdy to zrobisz, zróbgit add file_merged
i zrób topull
ponownie.źródło
wypróbuj ten kod
źródło
Jeśli chcesz po prostu wyrzucić wszystko z folderu roboczego (np. Wyniki nieudanego lub przerwanego scalenia) i powrócić do czystego poprzedniego zatwierdzenia, wykonaj
git reset --hard
.źródło
Rozumiem, że chcesz zniszczyć lokalne zmiany i zdjąć to, co masz na pilocie?
Jeśli wszystko inne zawiedzie, a jeśli (całkiem zrozumiale) boisz się „zresetować”, najprostszą rzeczą jest po prostu sklonowanie źródła w nowym katalogu i wyrzucenie starego.
źródło
Po uruchomieniu tego polecenia otrzymasz najnowszy tag, który zwykle jest wersją twojego projektu:
źródło
Wydaje mi się, że masz problemy z core.autocrlf. core.autocrlf = true może powodować problemy takie jak te, które opisujesz w systemie Windows, jeśli nowe wiersze CRLF zostały sprawdzone w repozytorium. Spróbuj wyłączyć core.autocrlf dla repozytorium i wykonaj twardy reset.
źródło
Jeśli używasz Git GUI, najpierw pobierz, a następnie scal.
Pobierz za pomocą menu zdalnego >> Pobierz >> Pochodzenie. Scal za pomocą menu Scal >> Scal lokalnie.
Pojawi się następujące okno dialogowe.
Wybierz przycisk radiowy gałęzi śledzenia (również domyślnie zaznaczony), pozostaw żółte pole puste i naciśnij przycisk scalania, co powinno zaktualizować pliki.
Przed wykonaniem tych kroków cofnąłem już niektóre lokalne zmiany, ponieważ i tak chciałem je odrzucić, więc nie muszę później eliminować poprzez scalanie.
źródło