Pobieranie nowych aktualizacji z oryginalnego repozytorium GitHub do rozwidlonego repozytorium GitHub

Rozwidlałem czyjeś repozytorium na Githubie i chciałbym zaktualizować moją wersję o commity i aktualizacje wykonane w oryginalnym repozytorium. Zostały zrobione po rozwidleniu mojej kopii.

Jak mogę pobrać zmiany, które zostały wprowadzone w origin i włączyć je do mojego repozytorium?

 530
Author: Peter Mortensen, 2010-10-11

5 answers

Musisz dodać oryginalne repozytorium (to, które rozwidlałeś) jako zdalne.

Ze strony podręcznika GitHub Fork :

widelec

Gdy klon zostanie ukończony, Twój repo będzie miał pilota o nazwie " origin", który wskazuje na Twój fork na Githubie.
Nie pozwól, aby nazwa Cię zmyliła, nie wskazuje to na oryginalny repo, z którego się rozwidlałeś. Aby pomóc ci śledzić ten repo, dodamy kolejny zdalny o nazwie "upstream":

$ cd github-services
$ git remote add upstream git://github.com/pjhyett/github-services.git
$ git fetch upstream

# then: (like "git pull" which is fetch + merge)
$ git merge upstream/master master

# or, better, replay your local work on top of the fetched branch
# like a "git pull --rebase"
$ git rebase upstream/master

Masz również Ruby gem, który może ułatwić operacje na Githubie .

forked

Zobacz także " Git fork is git clone?".

 617
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:47

Oprócz odpowiedzi VonC, możesz jeszcze bardziej dostosować ją do swoich upodobań.

Po pobraniu ze zdalnej gałęzi, nadal będziesz musiał scalić commity. Zamieniłbym

$ git fetch upstream

Z

$ git pull upstream master

Ponieważ git pull jest zasadniczo git fetch + git merge.

 87
Author: n00shie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-26 23:07:42

Ten wideo pokazuje Jak zaktualizować fork bezpośrednio z GitHub

Kroki:

  1. Otwórz Widelec na Githubie.
  2. Kliknij na Pull Requests.
  3. Kliknij na New Pull Request. Domyślnie GitHub porównuje oryginał z Twoim forkiem i nie powinno być nic do porównania, jeśli nie wprowadziłeś żadnych zmian.
  4. Kliknij na switching the base. Teraz GitHub porówna Twój fork z oryginałem i powinieneś zobaczyć wszystkie najnowsze zmiany.
  5. Kliknij na Create a pull request aby to porównać i przypisać przewidywalną nazwę do żądania pull (np. aktualizacja z oryginału).
  6. Kliknij na Create pull request.
  7. przewiń w dół i kliknij Merge pull request i na koniec Confirm połącz. Jeśli twój fork nie miał żadnych zmian, będziesz mógł połączyć go automatycznie.
 58
Author: Dmitry Pavlov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-30 07:56:02

Użycie:

git remote add upstream ORIGINAL_REPOSITORY_URL

To ustawi Twój upstream do repozytorium, z którego się rozwidlałeś. Więc zrób to:

git fetch upstream      

Spowoduje pobranie wszystkich gałęzi łącznie z master z oryginalnego repozytorium.

Połącz te dane w lokalnej gałęzi master:

git merge upstream/master

Przesuń zmiany do rozwidlonego repozytorium tj. do origin:

git push origin master
Voila! Koniec z synchronizacją oryginalnego repozytorium.
 37
Author: Akshayraj Kore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-14 03:19:08

Jeśli używasz aplikacji GitHub desktop, w prawym górnym rogu znajduje się przycisk synchronizacji. Kliknij na nią, a następnie Update from <original repo> w pobliżu lewego górnego rogu.

Jeśli nie ma zmian do zsynchronizowania, będzie to nieaktywne.

Oto kilka zrzutów ekranu aby to ułatwić.

 1
Author: sudo bangbang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-19 03:42:11