2017-02-19 16 views
11

Całkowicie zawiodłem master branch mojego rozwidlonego repoka git.Jak zresetować gałąź master git do gałęzi upstream w rozwidlonym repozytorium?

Chcę całkowicie zresetować gałąź główną, która została przesunięta do mojego widelca z zawartością repozytorium głównego. Nie jestem zainteresowany zachowaniem jakichkolwiek zmian w gałęzi głównej lub historii.

Najprostszym rozwiązaniem byłoby usunięcie mojego rozwidlonego repozytorium i ponowne przetworzenie z projektu poprzedzającego. Mam jednak pracę w innych pchanych gałęziach, których nie chcę stracić.

W ten sposób mogę zresetować moją odepchniętą gałąź master za pomocą głównego wzorca?


git clone https://myrepo.git 
cd myrepo 
git remote add upstream https://upstream.git 
git fetch upstream 

Gdzie mam pójść stąd zresetować moje lokalnych i zdalnych oddziałów mistrzowskie z górnej mistrza?

Odpowiedz

17

Możesz zresetować lokalną gałąź master do wersji upstream i przenieść ją do swojego repozytorium.

Zakładając, że "upstream" jest oryginalnym repozytorium i "pochodzenie" to widelec:

git checkout master 
# this will delete all your local changes to master 
git reset --hard upstream/master 
# take care, this will delete all your changes on your forked master 
git push origin master --force 

(Można zdefiniować oryginalną repo jako "upstream" z git remote add upstream /url/to/original/repo.)

+1

Prawdopodobnie powinien to być "git reset --hard upstream/master", aby zresetować katalog roboczy. Ale twoja odpowiedź jest jednak prawidłowa. – j6t

+0

Tak, użyłem git reset - hard upstream/master – MagGGG

+0

Nie używanie "--hard" działa również przy zachowaniu lokalnych zmian. Zrobiłbym twardy reset w rozszerzonym kroku, aby ewentualnie sprawdzić różnicę. –

1

byłoby to zresetowanie twój oddział główny z głównym nadrzędnym i jeśli oddział został zaktualizowany od czasu twojego rozwidlenia, to również pobierze te zmiany.

git checkout master 
git reset upstream/master 
git pull --rebase upstream master 
git push origin master --force 

PS: Zakładając, że Upstream jest oryginalnym repo, podczas gdy pochodzenie jest twoją kopią.

Powiązane problemy