2011-08-12 8 views
12

Moja koleżanka połączyła kilka zmian dla poprawek produkcyjnych w swoim lokalnym oddziale głównym, a następnie popchnęła mistrza do naszego repozytorium GitHub. Teraz staram się zaktualizować mój lokalny oddział główny jego zmianami. Kiedy robisz "git pull origin" z konsoli git, wydaje ci się, że wszystko idzie dobrze, pokazując wszystkie pliki. Ale pod koniec kończy się z komunikatem "Przerwanie".Git Pull Aborting

Nie mam pojęcia, co dalej robić. Wsparcie?

AKTUALIZACJA: Rozwiązany problem. Prawdziwym źródłem problemu było to, że mój współpracownik usunął niektóre wpisy z pliku .gitignore w swoim oddziale, co pozwoliło na sprawdzenie kilku nowych plików. Ponieważ mój lokalny .gitignore wciąż ignorował te pliki, moje lokalne repo nie przypuszczało, żebym miał lokalne pliki robocze do dodania do indeksu. Skończyło mi się usunięcie wszystkich plików, a następnie pociągnięcie zadziałało i przyniosło je wszystkie.

Zdecydowanie będę ostrożniejszy przy edycji pliku .gitignore i sprawdzaniu go. Teraz mam trochę nowego uznania dla jego wpływu na innych programistach.

+0

W rzeczywistości istnieje jeszcze jedna ciekawostka, która może być powiązana lub nie. Kiedy mój kolega pchnął, rzeczy "wydawały się" tak, jakby działały. Ale kiedy poszliśmy do GitHub, nie było żadnych nowych zobowiązań. Teraz jego widok lokalnej gałęzi w GitExtensions wygląda poprawnie, a my mogliśmy zobaczyć jego zmiany w GitHub. Więc kiedy połączysz lokalne, a następnie pchasz, czy NIE spodziewasz się zobaczyć nowego zatwierdzenia na GitHub? A jeśli nie, jak mogę powiedzieć, że mistrz został zmieniony, patrząc na GitHub? – sisdog

+0

@Tim, pokazuje edytowany mój post. Czy coś zmieniłeś? Nie wiedziałem, że ludzie mogą zmienić mój post i ... dlaczego to zmieniliście? – sisdog

+0

kliknij "5 minut temu" w "edytowane 5 minut temu", a zobaczysz różnicę. Właśnie wprowadził niewielką zmianę interpunkcji. –

Odpowiedz

8

Prawdopodobnie umieścił zatwierdzenie gdzieś w istniejącym drzewie zatwierdzenia, zamiast na nim.

Spróbuj tego:

git fetch origin 
git rebase origin/master 

A jeśli to nie zadziała, wystarczy utworzyć lokalny oddział origin, cherry-pick lokalnych zobowiązuje na nią, master reset zanim cokolwiek on commit połączone, a następnie scalić twoja lokalna gałąź na mistrza.

Domyślam się, że jego naciśnięcie w pewnym momencie wymagało wiadomości --force, aby uniknąć wiadomości o not a fast-forward commit. Nie chcesz tego robić w przyszłości.

+0

Dzięki @Stefan, ale wciąż mam problemy. Przynajmniej dzięki uruchomieniu bazy uzyskano trochę więcej informacji. Na koniec powiedział: Przerwanie - nie odliczaj HEAD. Czy to stanowi jakąś wskazówkę? – sisdog

+0

Czy masz jakieś pliki lokalnie, które zostałyby zmienione przez rebelierę? Spróbuj przejrzeć kopię pochodzenia do nowego oddziału i zobaczyć, co to mówi. 'git checkout -b testbranch origin/master' –

+0

Cóż, mam ten sam błąd, ale tym razem przewinąłem okno i nauczyłem się czegoś więcej. Tak więc natychmiast po uruchomieniu polecenia pojawia się następujący komunikat: "error: Następujące nieśledzone pliki drzewa roboczego zostaną nadpisane przez kasę:". To prawdziwy problem. Ale jakie jest rozwiązanie? Myślę, że mój kolega zmienił plik .gitignore, który dodał kilka nowych plików do kontroli wersji. Pokazuje mi wszystkie te pliki. Więc może powinienem najpierw pobrać najnowszy plik .gitignore, a następnie zatwierdzić wszystkie nowe pliki? – sisdog

5

Korzeń problemu było to, że mój kolega usunięto niektóre wpisy z pliku .gitignore w swojej branży, który pozwalał kilka nowych plików przyjść do jego zaewidencjonowania. Ponieważ mój lokalny .gitignore nadal ignorował te pliki, nie sądziłem, że mam lokalne pliki robocze, które można dodać do indeksu. Skończyło mi się usunięcie wszystkich plików, a następnie ściąganie zadziałało i przyniosło je wszystkie.