Rozwidliłem czyjeś repozytorium na GitHub i chciałbym zaktualizować moją wersję za pomocą zatwierdzeń i aktualizacji dokonanych w oryginalnym repozytorium. Zostały one wykonane po rozwidleniu kopii.
Jak mogę pobrać zmiany dokonane w źródle i włączyć je do mojego repozytorium?
git push --force origin --tags
proponowane rozwiązania!Odpowiedzi:
Musisz dodać oryginalne repozytorium (to, które rozwidliłeś) jako zdalne.
Ze strony podręcznika użytkownika GitHub :
Masz również rubinowy klejnot, który może ułatwić operacje GitHub .
Zobacz także „ Git fork is git clone? ”.
źródło
git rebase upstream/master
, ale dodałem dwie możliwości w odpowiedzi.git push --force
, zastępując historię swojego oddziału w GitHub przez lokalny oddział, który właśnie zmieniłeś. Ponieważ tylko ty używasz smutnej gałęzi, nie ma w tym bałaganu.Oprócz odpowiedzi VonC możesz jeszcze bardziej dostosować ją do swoich upodobań.
Po pobraniu ze zdalnej gałęzi nadal będziesz musiał scalić zatwierdzenia. Chciałbym wymienić
z
ponieważ git pull jest zasadniczo git fetch + git merge.
źródło
git rebase upstream master
Pamiętaj, że nie jest to wolne od konfliktów, jeśli wystarczająco się od niego oddzieliłeśupstream/master
. Zobacz git-scm.com/docs/git-rebase (tl; dr: ten twardy resetuje twojego lokalnego mistrza do głównego, a następnie próbuje przerobić wszystkie lokalne commity od punktu rozbieżności do przodu)Ten film pokazuje, jak zaktualizować widelec bezpośrednio z GitHub
Kroki:
Pull Requests
.New Pull Request
. Domyślnie GitHub porówna oryginał z twoim widelcem i nie powinno być nic do porównania, jeśli nie wprowadzisz żadnych zmian.switching the base
. Teraz GitHub porówna twój widelec z oryginałem i powinieneś zobaczyć wszystkie najnowsze zmiany.Create a pull request
aby zobaczyć to porównanie i przypisz przewidywalną nazwę do żądania ściągnięcia (np. Aktualizuj z oryginału).Create pull request
.Merge pull request
i na koniecConfirm
scal. Jeśli twój widelec nie miał żadnych zmian, będziesz mógł scalić go automatycznie.źródło
switching the base
opcjiPosługiwać się:
Spowoduje to ustawienie twojego upstream do repozytorium, z którego rozwidliłeś się. Następnie zrób to:
Spowoduje to pobranie wszystkich gałęzi, w tym głównego, z oryginalnego repozytorium.
Scal te dane w lokalnym oddziale głównym:
Wepchnij zmiany do rozwidlonego repozytorium, tj. Do źródła:
Voila! Po zakończeniu synchronizacji oryginalnego repozytorium.
źródło
Jeśli używasz aplikacji komputerowej GitHub, w prawym górnym rogu znajduje się przycisk synchronizacji. Kliknij go, a następnie
Update from <original repo>
w lewym górnym rogu.Jeśli nie ma żadnych zmian do synchronizacji, będzie to nieaktywne.
Oto kilka zrzutów ekranu, aby to ułatwić.
źródło
Jeśli nie ma nic do stracenia, możesz również usunąć widelec, po prostu przejdź do ustawień ... przejdź do sekcji niebezpiecznej poniżej i kliknij usuń repozytorium. Zostaniesz poproszony o podanie nazwy repozytorium i hasła po. Następnie po prostu ponownie rozwidlasz oryginał.
źródło
Jeśli chcesz to zrobić bez cli, możesz to zrobić w pełni na stronie Github.
New pull request
.Create new pull request
.źródło
Aby automatycznie zsynchronizować rozwidlone repozytorium z repozytorium nadrzędnym, możesz użyć aplikacji Pull na GitHub.
Więcej informacji znajduje się w pliku Readme .
Aby uzyskać zaawansowane ustawienia, w których chcesz zachować zmiany wprowadzone w rozwidlonym repozytorium, zapoznaj się z moją odpowiedzią na podobne pytanie tutaj .
źródło