Rozwidliłem repozytorium, a następnie dokonałem pewnych zmian i wygląda na to, że wszystko popsułem.
Chciałbym zacząć od nowa od podstaw, wykorzystując aktualny upstream / master jako podstawę mojej pracy.
Czy powinienem zmienić bazę mojego repozytorium, czy w ogóle go usunąć?
Odpowiedzi:
Najprostszym rozwiązaniem byłoby (użycie „
upstream
” jako nazwy zdalnej odwołującej się do pierwotnego repozytorium repo):(Podobnie do strony GitHub, sekcja „Co powinienem zrobić, jeśli jestem w złej sytuacji?” )
Pamiętaj, że możesz utracić zmiany dokonane w
master
gałęzi (zarówno lokalnie, z powodureset --hard
, jak i zdalnej, z powodupush --force
).Alternatywą byłoby, jeśli chcesz zachować swoje zatwierdzenia
master
, odtworzyć je na bieżącymupstream/master
.Wymień część resetowania na
git rebase upstream/master
. Nadal będziesz musiał wymusić push.Zobacz także „ Co powinienem zrobić, jeśli jestem w złej sytuacji? ”
Bardziej kompletne rozwiązanie, tworzenie kopii zapasowej bieżącej pracy (na wszelki wypadek) opisano szczegółowo w „ Oczyszczanie gałęzi master git i przeniesienie niektórych zmian do nowej gałęzi ”.
Zobacz także „ Pobierz nowe aktualizacje z oryginalnego repozytorium GitHub do rozwidlonego repozytorium GitHub ”, aby zilustrować, co to jest „
upstream
”.Uwaga: ostatnie repozytoria GitHub chronią
master
oddział przedpush --force
.Będziesz musiał
master
najpierw odblokować ochronę (patrz zdjęcie poniżej), a następnie ponownie zabezpieczyć ją po naciśnięciu siły ).Uwaga: konkretnie w serwisie GitHub dostępny jest (luty 2019 r.) Skrót do usuwania rozwidlonych repozytoriów dla żądań ściągania, które zostały scalone w górę.
źródło
git reset --hard upstream/master
git reset
w odpowiedzi.git remote
” w stackoverflow.com/a/3903835/6309 .Uwielbiam odpowiedź VonC. Oto prosta wersja dla początkujących.
Istnieje zdalny git, o
origin
którym jestem pewien, że wszyscy jesteście tego świadomi. Zasadniczo możesz dodać dowolną liczbę pilotów do repozytorium git, jak chcesz. Możemy więc wprowadzić nowego pilota, który jest oryginalnym repozytorium, a nie widelcem. Lubię to nazywaćoriginal
Dodajmy oryginalne repo do naszego widelca jako pilota.
Teraz pobierzmy oryginalne repozytorium, aby upewnić się, że mamy najnowszy kodowany
Jak sugerował VonC, upewnij się, że jesteśmy mistrzem.
Teraz, aby przyspieszyć rozwidlenie dzięki najnowszemu kodowi oryginalnego repo, wszystko, co musimy zrobić, to mocno zresetować naszą gałąź master zgodnie z oryginalnym pilotem.
I gotowe :)
źródło
fatal: ambiguous argument 'original/master': unknown revision or path not in the working tree.
do ostatniego kroku. Jakakolwiek rada?original
jest lepszy niżupstream
(którego używają dokumenty Github), podobnie jakorigin/master
„upstream” od localmaster
. Zmniejsza niejednoznaczność. Zastanawiam się, czy to dlatego go używasz?Po @VonC świetna odpowiedź. Zasady firmy GitHub mogą nie zezwalać na „wymuszanie wypychania” na wzorcu.
remote: error: GH003: Sorry, force-pushing to master is not allowed.
Jeśli pojawi się taki komunikat o błędzie, spróbuj wykonać następujące czynności.
Aby skutecznie zresetować widelec, musisz wykonać następujące kroki:
Otwórz widelec na GitHub, w „Ustawienia -> Oddziały -> Domyślna gałąź” wybierz „new_master” jako nową domyślną gałąź. Teraz możesz wymusić wciśnięcie gałęzi „master”:
Następnie należy ustawić „master” jako domyślną gałąź w ustawieniach GitHub. Aby usunąć „tmp_master”:
Nadal obowiązują inne odpowiedzi ostrzegające o utracie zmiany, zachowaj ostrożność.
źródło
Jak to zrobić w 100% poprzez GUI Sourcetree
(Nie wszyscy lubią robić rzeczy za pośrednictwem interfejsu wiersza poleceń git)
Kroki
Kliknij dwukrotnie gałąź „master”, aby ją sprawdzić, jeśli jeszcze nie jest wyewidencjonowana.
Znajdź zatwierdzenie, które chcesz zresetować, jeśli nazwiesz repo „master”, najprawdopodobniej będziesz chciał znaleźć zatwierdzenie ze znacznikiem „master / master”.
Kliknij prawym przyciskiem myszy na zatwierdzenie> „Zresetuj bieżącą gałąź do tego zatwierdzenia”.
W oknie dialogowym ustaw pole „Tryb pracy:” na „Twarde odrzucanie wszystkich zmian kopii roboczej”, a następnie naciśnij „OK” (pamiętaj, aby wszelkie zmiany, których nie chcesz stracić, najpierw umieścić w osobnej gałęzi).
Jesteś skończony!
źródło