Łączenie widełek w Githubie

Rozwidlałem repozytorium GitHub. Potem wcisnąłem kilka zmian do widelca. Następnie oryginalne repozytorium połączyło moje zmiany i kilka innych. Teraz chcę połączyć te zmiany, których mi brakuje. Próbowałem prostego pull, a następnie push, ale to daje moje commity w dwóch egzemplarzach. Jak najlepiej to zrobić?

 247
Author: R. Martinho Fernandes, 2009-07-14

2 answers

Prawdopodobnie masz "zdalne" dla każdego repozytorium. Musisz wyciągnąć z jednego pilota i popchnąć do drugiego.

Jeśli pierwotnie sklonowałeś z widelca, ten pilot będzie nazywany "origin". Jeśli jeszcze go nie dodałeś, musisz dodać repozytorium pierwszego faceta jako innego zdalnego:

git remote add firstguy git://github.com/firstguy/repo.git

Po tym wszystkim, powinieneś być w stanie

git pull firstguy master
git push origin

Pamiętaj, git pull to nic innego jak makro, które wykonuje git fetch i git merge w tej kolejności. Musisz tylko Pobierz listę commitów z repozytorium pierwszego gościa, a następnie połącz jego gałąź z Twoim drzewem. Scalanie powinno działać poprawnie z commitami w obu gałęziach.

[5]}GitHub, w całej swojej niesamowitości, daje Ci oczywiście Skrót. Na widelcu repozytorium znajduje się przycisk "przewijania do przodu", którego możesz użyć, aby złapać widelec, jeśli zostaniesz całkowicie połączony z drugą stroną.
 335
Author: Jim Puls,
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
2009-07-14 03:54:16

Więc zaakceptowana odpowiedź powyżej nie zadziałała dla mnie idealnie. Mianowicie, wydawało się, że stracił link do oryginalnego autora Githuba, gdy działał, a potem już nie działał. Myślę, że problem polegał na tym, że w odpowiedzi pominięto / pomiędzy nazwą zdalnego a gałęzią. Pobierze więc gałąź o nazwie master z pilota, ale wtedy nie będzie w stanie nic z nią zrobić. Nie wiem dlaczego.

Oto sposób github poleca z ich Strona .

Po sklonowaniu rozwidlonego repo, musisz dodać pilota wskazującego na oryginał, tak jak w poprzedniej odpowiedzi. Lubią to nazywać pod prąd, ale to nie ma znaczenia.

git remote add upstream git://github.com/octocat/Spoon-Knife.git

Potem pobierasz

git fetch upstream

I zobaczysz wersje dostępne do scalania

From git://github.com/octocat/Spoon-Knife.git
 * [new branch]      gh-pages   -> upstream/gh-pages
 * [new branch]      master     -> upstream/master

Następnie wystarczy wybrać gałąź, którą chcesz połączyć. Pamiętaj, że nie są to lokalne oddziały, są przechowywane pod pilotami. Ale pod warunkiem, że nie masz lokalnego oddziału o nazwie upstream / master (co jest dozwolone) powinno być dobrze łącząc się z linią poniżej:

git merge upstream/master

Alternatywnie możesz skrócić fetch/merge (przynajmniej po początkowym fetch) z tą linią:

git pull upstream/master
 71
Author: Bob Spryn,
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-05-30 14:26:46