2013-05-07 28 views
6

To pytanie różni się od innych pytań, ponieważ chcę zachować pewne zobowiązania, a ja przywracam niektóre zatwierdzenia.Jak mogę przywrócić `git fetch upstream; git merge upstream/master`?

Oto moja konfiguracja.

Upstream repo on github (public repo which I don't own) 
Personal repo on my server(git clone --bare $upstream) 

Mój workflow było tak:

Need to customize my personal branch 
    1. check out origin/master(Personal) 
    2. make changes 
    3. push to origin/master 

Need to get new feature or bug fix from the original author(github) 
    1. git fetch upstream 
    2. git merge upstream/master 

Teraz znajdę upstream/master ma błąd i chce wrócić,
Jak mogę wrócić do stanu sprzed I pobrania/połączyły upstream Ostatni raz?

Edytuj.

Załóżmy

  1. I połączyła upstream
  2. I połączyła co członek zespołu popychany do pochodzenia/Master (Personal)

Teraz chcę cofnąć krok 1.

reset git --hard co mmit_sha_of_one_prior_the_merge_1

(Chociaż znalezienie sha nie jest łatwe. dziennik git pokazuje wiele popełnić SHA-tych w górę, więc nie jest łatwo znaleźć popełnienia-sha-of_one_prior_the_merge_1 który nie stanowi upstream ale origin/master)

Jak mogę utrzymać Krok 2 seryjnej?

Załóżmy nieco bardziej skomplikowany scenariusz

  1. I połączyła upstream
  2. I połączyła to, co inny członek zespołu pchnął Personal
  3. ja też pchnął moją pracę Personal

Teraz chcę cofnąć scalenie w górę strumienia. Jak mogę to zrobić?

+0

http://stackoverflow.com/questions/2389361/undo-a-git-merge – 1615903

Odpowiedz

-1

można przywrócić do lokalnego master oddział do stanu origin/master (jeśli nie push seryjnej do origin/master) z:

git reset --hard origin/master 

Jeśli nie jest to możliwe, można użyć reflog:

git reflog 

Możesz zobaczyć undoing a git rebase, aby uzyskać więcej informacji

+0

Jest to przeciwieństwo tego, co OP chciał. –

2

Ponieważ masz faktyczne zatwierdzenie scalenia - ponieważ wprowadziłeś własne zmiany - powinieneś być w stanie wykonać:

git reset --hard HEAD~1 

Przy założeniu ostatniego zatwierdzenia nastąpiło zatwierdzenie scalenia.

+0

Mam inne zatwierdzenia w moim prywatnym repo, inne niż scalenie-commit – eugene

Powiązane problemy