Wpis z mikrobloga

Jest tu ktoś z większym doświadczeniem z #git ?
Taka sytuacja: aktualizowałem obsługę facebooka do api 2.2. Utworzyłem w tym celu branch: facebook-api-2.2. Wprowadzanie wymaganych zmian trochę trwało, były inne rzeczy do zrobienia (i wprowadzenia do master), ale w końcu skończyłem. Dzisiaj chciałem dołączyć 'facebook-api-2.2' do 'master'. Z pewnym zaskoczeniem odkryłem, że wiele plików się nie zmergowało!

Bliższa analiza wskazała, że zmergowały się tylko pliki zmienione po pewnym fuckupie - musiałem przenieść commit z bieżącej gałęzi do mastera (drobna poprawka niezwiązana z tą gałęzią). Przeniosłem to jakąś dziwną procedurą znalezioną w sieci, której teraz pewnie nie odszukam.

Pytanie: jak w tej sytuacji wykonać merge?

Dorzucę tag #programowanie - może ktoś miał podobną sytuację
  • 12
  • Odpowiedz
@singollo: Dawno juz nie pracowałem z czystym gitem ale:

po 1 moze miales konflikty na plikach?
2: Możesz sprobować zmergowac aktualnego mastera do siebie ( a nie na odwrot) i zobaczyc jak to bedzie wyglądać
  • Odpowiedz
2: Możesz sprobować zmergowac aktualnego mastera do siebie ( a nie na odwrot) i zobaczyc jak to bedzie wyglądać


@Xantras: a nie zeżre mi to wprowadzonych zmian? Bo jeśli istnieje ryzyko, że różnice znikną na korzyść aktualnego master to wolę nie próbować...
  • Odpowiedz
@singollo: A czy twój branch nie był przypadkiem kilka commitów za masterem? Tzn. czy na masterze istniały commity, których nie było na twoim branchu?

Ogólnie zawsze powinno działać:
git checkout
git merge master /// tutaj upewniamy się, że nie ma commitów 'behind'
git
  • Odpowiedz
@Teal_c: Do dupy :)
1. wycofałem merge
2. po pierwszych dwóch poleceniach w facebook-api-2.2 zniknęły zmiany - dokładnie w tych plikach, które wcześniej nie zostały zmergowane
3. przynajmniej mam ich listę (bo widzę, co zostało "updated")
4. profit???
  • Odpowiedz
@singollo: Bardzo dużo namieszałeś w historii zmian, nie ma innej opcji. Zmiany nie mają prawa zniknąć z git'a, musisz cofnąć HEAD na swoim branchu, tutaj jest świetny wątek na SO mówiący o tym:
http://stackoverflow.com/questions/1485578/change-a-git-remote-head-to-point-to-something-besides-master
Pierwsza odpowiedź to kopia mojej podpowiedzi, reszta porusza inne kwestie. Zwróć uwagę na 'set-head', gdy wyciągniesz listę commitów na to ta komenda Cię uratuje.
Potem zostaje tylko rebase na master (git rebase).

Ciągle bez logów to zgadywanka
  • Odpowiedz