Jak zaktualizować widelec repozytorium GitHub w interfejsie internetowym?

58

Mam repozytorium Github, które rozwinęłem z innego projektu kilka miesięcy temu. Minęło kilka miesięcy i oryginalne repozytorium główne uległo zmianie. Chciałbym zaktualizować moje repozytorium, aby odzwierciedlić te zmiany. Czy jest to możliwe w interfejsie internetowym Github? Czy po prostu muszę usunąć repozytorium i ponownie je rozwidlić?

Jake Wilson
źródło

Odpowiedzi:

43

Możesz spróbować odwrócić sposób działania żądań ściągania.

  1. Idź do swojego widelca
  2. Wystąp prośbę o pobranie

    Domyślnie będzie to twój widelec po prawej ( repozytorium głowy ) z prośbą o wypchnięcie jego zatwierdzeń i zmian do oryginalnego repozytorium ( repozytorium podstawowe ) po lewej stronie.

  3. Kliknij menu rozwijane zarówno dla repozytorium podstawowego, jak i repozytorium głowy i wybierz repozytorium innych.

    Chcesz, aby twoje było wyświetlane po lewej stronie (akceptując zmiany), podczas gdy oryginalne repozytorium znajduje się po prawej stronie (ta ze zmianami do wypychania). Jak pokazano na tym obrazku:

    widelec zrobiony nad sobą

  4. Wyślij żądanie ściągnięcia

    Jeśli w rozwidleniu nie wprowadzono żadnych zmian, powinieneś być w stanie automatycznie zaakceptować scalenie.

Jeśli Twój kod w jakiś sposób jest w konflikcie lub nie jest wystarczająco czysty, to nie będzie działać, aby zaktualizować za pośrednictwem interfejsu internetowego GitHub i będziesz musiał pobrać kod i rozwiązać wszelkie konflikty na komputerze przed ponownym przejściem do rozwidlenia.

Osiem dni złego samopoczucia
źródło
3
To wciąż działa, ale tak, nie jest idealne. To zdecydowanie tylko sztuczka. Nie jest to właściwy sposób na zrobienie tego.
Jake Wilson,
3
Potwierdził zły pomysł. To zanieczyszcza repozytorium w taki sposób, że Github sugeruje, abyś ściągnął żądanie pustego zatwierdzenia do oryginalnego projektu. Zobacz na przykład github.com/dthommes/RoboSpring/pull/3 - raz włączyłem się w to, potem zsynchronizowałem, a teraz Github chce, żebym wcisnął zatwierdzenie „Synchronizowanie mojego widelca” oznaczone jako „Żądanie ściągnięcia scalenia nr 1 od dthommes / master … ”
usr-local-ΕΨΗΕΛΩΝ
1
Nie sądzę, że to już działa. Chociaż wydaje się to nieco dziwne, nie ma prostego sposobu na zrobienie tego.
Toby Allen
1
Właśnie go wypróbowałem i nie od razu wydawało się, że działa - po zmianie jednego z widelców natychmiast otworzył stronę „Porównywanie zmian”. Ale kliknięcie linku „porównaj między widłami” pozwoliło na zmianę drugiego widelca. Być może możesz dodać coś do tego efektu do swojej odpowiedzi.
Peter Mortensen,
4
GitHub powinien dodać przycisk „Sync Fork”, abyś nie musiał tworzyć miliona PR. Na razie używam wiersza poleceń do aktualizacji moich widelców
Suici Doga
22

Będzie łatwiej.

  1. Przejdź do Forko Repo (twoje) i kliknij przycisk - „Nowe żądanie ściągnięcia”.
  2. Na stronie, która się otworzy, w komunikacie pod listą rozwijaną znajduje się mały link do „przełączania bazy”. Kliknij w link.
  3. Teraz automatycznie doprowadzi do twojego oryginalnego repo. Kliknij przycisk Utwórz żądanie ściągnięcia i napisz komunikat zatwierdzenia.
  4. Teraz doprowadzi to automatycznie do rozwidlonego repozytorium, kliknij przycisk Połącz żądanie ściągnięcia i Potwierdź scalenie, aby zakończyć.
Youngjae
źródło
Powinieneś wyjaśnić, jakie są te zielone guziki, i byłaby to świetna odpowiedź ....
Rodrigo Graça
To zdecydowanie najlepsza odpowiedź od 4/2016.
dr01
7
Problem z tą metodą polega na tym, że dodaje ona dodatkowe zatwierdzenie do twojego oddziału, więc tak naprawdę nie jest zsynchronizowane z repozytorium nadrzędnym.
Mottie
@Mottie Czy istnieje sposób, aby dowiedzieć się, czy nasz widelec stoi za najnowszą wersją upstream, i zobaczyć różnicę zmian bez ich ciągnięcia?
Sujay Phadke,
1
@SujayPhadke Na głównej rozwidlonej stronie repozytoriów pod przyciskiem wyboru gałęzi pojawi się komunikat „Ta gałąź to xx zatwierdza za xxxx: master”. Jeśli chodzi o wyświetlanie różnic, w tym samym wierszu co komunikat jest przycisk „Porównaj”; lub możesz przejść do tego linku:https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
Mottie
3

Jak zaktualizować rozwidlone repozytorium GitHub o zmiany ze zdalnego repozytorium nadrzędnego


Instrukcje z GitHub Help:

Konfigurowanie zdalnego widelca

Synchronizowanie widelca


Instrukcje konfiguracji / obsługi:

Otwórz Git Bash (Windows) lub Linux / Mac Terminal

Jeśli nie sklonowałeś jeszcze swojego repozytorium, musisz przejść do katalogu roboczego folderu programistycznego i sklonować go na stacji roboczej.

$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git

Przejdź do katalogu roboczego rozwidlonego repozytorium na stacji roboczej.

$ cd /user/development/my_forked_repo/

Wyświetl bieżące skonfigurowane zdalne repozytorium dla swojego widelca.

 $ git remote -v

origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

Określ nowe zdalne repozytorium nadrzędne, które zostanie zsynchronizowane z rozwidleniem.

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

Sprawdź nowe repozytorium nadrzędne, które określiłeś dla swojego widelca.

$ git remote -v

origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

Pobierz gałęzie i odpowiednie zatwierdzenia z repozytorium nadrzędnego. Zatwierdzenia do master będą przechowywane w lokalnym oddziale, upstream / master.

$ git fetch upstream

remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

Sprawdź lokalny oddział główny widelca.

$ git checkout master

Switched to branch 'master'

Scal zmiany z nadrzędnego / nadrzędnego do lokalnego oddziału nadrzędnego. Spowoduje to zsynchronizowanie głównej gałęzi widelca z repozytorium nadrzędnym, bez utraty lokalnych zmian.

$ git merge upstream/master

Updating a422352..5fdff0f
Fast-forward
README                    |    9 -------
README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

Jeśli Twój lokalny oddział nie ma żadnych unikalnych zatwierdzeń, Git zamiast tego wykona „przewijanie do przodu”:

$ git merge upstream/master

Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Musisz teraz przesunąć commits do swojego widelca.

$ git push

Jeśli nie jesteś jeszcze uwierzytelniony, pojawi się monit o podanie nazwy użytkownika / hasła github. Po uwierzytelnieniu nowe zatwierdzenia powinny zostać wypchnięte do widelca i widoczne na github.

ode2k
źródło
5
Dziękujemy za szczegółową odpowiedź, jednak liczono na rozwiązanie wykorzystujące interfejs sieciowy.
Toby Allen,