Jak przywrócić gałąź główną do upstream

145

Rozwidliłem repozytorium git i skonfigurowałem wcześniej. Zrobiłem kilka zmian w gałęzi Master, zobowiązałem się do przejścia na github.

Co powinienem teraz zrobić, aby porzucić wszystkie zmiany w gałęzi Master i uczynić ją identyczną z gałęzią główną wyższego rzędu?

Gelin Luo
źródło

Odpowiedzi:

277

(Zakładam, że zmiany, które chcesz teraz zignorować, dotyczą twojego originpilota, jesteś w swoim masteroddziale i chcesz wrócić do zawartości upstreampilota)

Po pierwsze, zresetuj kopię roboczą do nadrzędnego wzorca:

git remote update
# the double hyphen ensures that upstream/master is
# considered as a revision and not confused as a path
git reset --hard upstream/master --

Następnie wepchnij tę nową gałąź do repozytorium pochodzenia, ignorując fakt, że nie będzie to szybkie przewijanie do przodu:

git push origin +master
nickgrim
źródło
14
Może być również konieczne uruchomienie, git remote add upstream <upstream_repo_url>jeśli rozgałęziłeś gałąź za pomocą GitHub.
Kato,
3
Jakie jest znaczenie +w git push origin +master? Czy to to samo, co sprawiedliwe git push origin master?
bluenote10
4
@ bluenote10 Nie są takie same. To +właśnie mówi gitowi, aby „[zignorował] fakt, że nie będzie to przewijanie do przodu”. To trochę jak robienie a git push --force, ale dotyczy tylko tego konkretnego odniesienia.
nickgrim
1
Nie działa dla mnie. Zrobiłem status git po tym, jak zawiera elementy, które zostały zmodyfikowane. Będę musiał wytrzeć i zacząć od nowa. Git jest niezwykle trudny do zrozumienia.
Mitch
1
@mehmet Nie, zmienia tylko gałąź, w której się znajdujesz.
Jan