Wpis z mikrobloga

Mirki pytanko z Gita.
Utworzyłem sobie nowy task-branch od mastera. Dodałem swoje zmiany i przed mergem chciałem pobrac aktualne zmiany z mastera.
W czasie jak pracowałem nad taskiem, inne osoby robiły swoje zadania i zmergowały ich branche do mastera, więc muszę te zmiany pobrać przed moim mergem.

Wklepałem git pull origin master na moim branchu i dostaję wynik: fatal: Not possible to fast-forward, aborting.
Są różne rozwiązania w necie, ale chce się was spytać jaki jest prawidłowy, żebym przypadkiem coś nie #!$%@?ł przy masterze xD

#programista15k #programowanie #git #github
  • 28
@Nolimit: coś się #!$%@?, nie możesz ściągnąć ze stasha i masz problem.

Przykładowo ktoś wchodzi i mówi, że masz w tej chwili przełączyć się na naprawę błędu produkcyjnego. A potem wchodzi ktoś inny i mówi, że najpierw sprawdź jeszcze coś innego. To ten rozgrzebany błąd produkcyjny wrzucasz na stasha. Jak już sprawdzisz, to wracasz do błędu, zrzucasz wszystko ze stasha, naprawiasz, czyścisz całą listę stashy. Wracasz do tego co robiłeś wcześniej
@mk321 git reset, zestashowanie zmian, pull z mastera i stash apply trwa kilka sekund. Jeżeli w tym czasie jesteś na tyle rozkojarzony żeby zmienić branch w drugiej karcie terminala, to pozostaje Ci korzystanie z GUI.
@Nolimit: nigdy w biurze nie pracowałaś? Pomiędzy wrzucaniem a zrzuceniem na stasha dostajesz piłeczką w łeb, odkręcasz się, a w drugiej sekundzie wpada szef z rykiem "#!$%@? sie na prodzie, tracą miliony na sekundę, zapieRDAAALAĆ!!!" i smaga cię batem po plecach.

Ludzie nie są bazami danych, żeby wykonywać operacje atomowo lub w transakcji.

Z GUI nie korzystam, bo szybciej z konsoli. Zresztą to nic by nie zmieniło.
@zibizz1: spotkałem się z sytuacjami gdy rebase powodował utratę commitow po merge, moze programista to zle wykonał... Raczej stronie od niego teraz. Kiedyś ochoczo korzystałem.
@moggwhy: Tak, rebase dla niedoświadczonych to szybka droga do utraty commitów
Bo jak wejdziesz w rebase to zaczynasz sobie modyfikowac całe repo lokalnie i jak źle przeprowadzisz proces to masz popsute.
Działa to tak że cała gałąź jest usuwana z repo i gdzieś na boku trzymana i commity sa po koleji wstawiane w nowe miejsce.
jak wystapi konflikt to trzeba go rozwiązać i wywołac
git rebase --continue
wielokrotnie aż proces sie
@nick230: wykonaj: git rebase origin/master
Jakbyś nie wiedział, to masz branch-e zdalne i lokalne. Zdalne to te zaczynające się od nazwy repozytorium (np. origin).

Możesz zatem:
- przejść na swój lokalny master,
- zrobić git pull, albo lepiej git reset --hard origin/master
- wrócić na swój branch
- zrobić to co chciałeś: git rebase master
...lub jak napisałem na początku.