18 Pytanie: Jak zaktualizować rozwidlone repozytorium GitHub?

pytanie utworzone w Fri, Apr 27, 2018 12:00 AM

Niedawno opracowałem projekt i zastosowałem kilka poprawek. Następnie utworzyłem żądanie ściągnięcia, które zostało następnie zaakceptowane.

Kilka dni później kolejna zmiana została wprowadzona przez innego współpracownika. Więc mój widelec nie zawiera tej zmiany.

Jak mogę uzyskać tę zmianę w moim widelcu? Czy muszę usunąć i ponownie utworzyć mój widelec, gdy wprowadzę dalsze zmiany? Czy istnieje przycisk aktualizacji?

    
3213
  1. Można to również zrobić z interfejsu użytkownika github. Chciałbym przyznać [do tego innego plakatu] [1]. [1]: stackoverflow.com/a/21131381/728141
    2014-02-20 13: 00: 31Z
  2. 2014-10-15 17: 26: 57Z
  3. Znalazłem to w artykułach pomocy Github: help.github.com/articles/syncing-a-fork
    2015-04-02 08: 57: 42Z
  4. 2015-08-29 12: 06: 52Z
  5. Oto demo wideo, które robi to za pomocą dwóch kont github youtube.com/watch?v=kpE0gTX4ycE
    2016-06-03 09: 29: 19Z
18 odpowiedzi                              18                         

W twoim lokalnym klonie rozwidlonego repozytorium możesz dodać oryginalne repozytorium GitHub jako „zdalne”. („Piloty” są jak pseudonimy dla adresów URL repozytoriów - origin to na przykład jeden.) Następnie możesz pobrać wszystkie gałęzie z tego repozytorium nadrzędnego i ponownie bazować na swojej pracy, aby kontynuować pracę nad wersją źródłową. Jeśli chodzi o polecenia, które mogą wyglądać tak:

 
# Add the remote, call it "upstream":

git remote add upstream https://github.com/whoever/whatever.git

# Fetch all the branches of that remote into remote-tracking branches,
# such as upstream/master:

git fetch upstream

# Make sure that you're on your master branch:

git checkout master

# Rewrite your master branch so that any commits of yours that
# aren't already in upstream/master are replayed on top of that
# other branch:

git rebase upstream/master

Jeśli nie chcesz przepisywać historii swojej gałęzi głównej (na przykład dlatego, że inni ludzie ją sklonowali), powinieneś zastąpić ostatnie polecenie git merge upstream/master. Jednakże, w celu uzyskania dalszych żądań ściągania, które są tak czyste, jak to możliwe, prawdopodobnie lepiej jest ponownie ustawić bazę.


Jeśli ponownie rozgałęziłeś swoją gałąź na upstream/master, być może będziesz musiał wymusić wypchnięcie, aby wypchnąć ją do własnego rozwidlonego repozytorium na GitHub. Zrobisz to za pomocą:

 
git push -f origin master

Wystarczy użyć -f po raz pierwszy po ponownym założeniu.

    
3512
2018-04-09 11: 19: 46Z
  1. Ponieważ twój widelec istnieje tylko na githubie, a github nie ma narzędzi do łączenia się przez interfejs WWW, właściwą odpowiedzią jest lokalne scalenie upstreamu i pchnięcie zmiany z powrotem na twój widelec.
    2012-06-19 03: 50: 50Z
  2. Oto świetny samouczek, który znalazłem podczas pracy z github: gun.io/blog/how-to-github-fork-branch-and-pull-request
    2012-06-19 03: 55: 04Z
  3. Szybka uwaga, która nie wymaga ponownego podstawiania własnej gałęzi głównej na eJeśli zaczynasz od stanu czystego, prawdopodobnie powinieneś pracować na osobnej gałęzi i z tego zrobić żądanie ściągnięcia. To sprawia, że ​​twój mistrz jest czysty dla wszelkich przyszłych fuzji i powstrzymuje cię przed koniecznością przepisywania historii za pomocą -f, co zakłóca działanie wszystkich, którzy mogliby sklonować twoją wersję.
    2013-05-29 23: 09: 52Z
  4. Zamiast komendy rebase użyłem następującego: git merge --no-ff upstream/master W ten sposób twoje zatwierdzenia nie są już na wierzchu.
    2016-10-17 13: 20: 14Z
  5. Kolejna porażka Git. Jeśli te narzędzia mają wspierać rozproszoną współpracę, to dlaczego tak trudno jest wykonać podstawowy przepływ pracy? 4 miliony ludzi i 2200 upvotes oznacza, że ​​narzędzie zawiodło. "możesz dodać oryginalne repozytorium GitHub jako" zdalne " - dlaczego nawet trzeba to zrobić? Dlaczego nie jest to robione podczas widelca? Co jest tak zepsute w tym narzędziu?
    2017-04-16 16: 05: 57Z

Począwszy od maja 2014 r., możliwa jest aktualizacja widelca bezpośrednio z GitHub. To wciąż działa od września 2017 r., BUT , to doprowadzi do historii brudnych zatwierdzeń.

  1. Otwórz swój widelec na GitHubie.
  2. Kliknij Pull Requests .
  3. Kliknij Nowe żądanie ściągnięcia . Domyślnie GitHub porówna oryginał z widelcem i nie powinno być nic do porównania, jeśli nie wprowadziłeś żadnych zmian.
  4. Kliknij przełączając bazę , jeśli widzisz ten link. W przeciwnym razie należy ręcznie upuścić listę base fork na widelec, a head fork do upstream. Teraz GitHub porówna Twój widelec z oryginałem i powinieneś zobaczyć wszystkie najnowsze zmiany. „wprowadź
  5. Utwórz żądanie ściągnięcia i przypisz przewidywalną nazwę do żądania ściągnięcia (np. Update from original).
  6. Przewiń w dół do Połącz żądanie pobierania , ale jeszcze nic nie klikaj.

Teraz masz trzy opcje, ale każda z nich prowadzi do mniejszej niż czysta historii zatwierdzania.

  1. Domyślnie utworzy brzydkie zatwierdzenie scalenia.
  2. Jeśli klikniesz menu rozwijane i wybierzesz „Squash and merge”, wszystkie wprowadzone interwencje zostaną zgniecione. Jest to najczęściej coś, czego nie chcesz.
  3. Jeśli klikniesz Rebase i scal , wszystkie zatwierdzenia zostaną wykonane „z” tobą, oryginalne PR będą linkować do twojego PR, a GitHub wyświetli This branch is X commits ahead, Y commits behind <original fork>.

Tak, możesz aktualizować repo za pomocą własnego interfejsu GitHub, ale spowoduje to utratę historii zatwierdzania. Trzymaj się linii poleceń zamiast tego - to łatwe.

    
690
2017-09-26 20: 41: 33Z
  1. Raz zadziałało świetnie. Za drugim razem ten proces nie działał w ten sam sposób: link „Przełączanie bazy” nie pojawił się. A kiedy trafię „Kliknij, aby utworzyć żądanie ściągnięcia”, stworzyło PR na repozytorium SOURCE. NIE tego, czego chciałem ..
    2014-08-21 18: 14: 03Z
  2. Nadal działa (Marchi 2015), mimo że nie ma już linku „Przełączanie bazy”. Musisz zmienić listę rozwijaną „Baza”, tak aby wskazywała na widelec, a następnie pojawi się monit „Porównaj w repozytoriach”, który przeniesie Cię tam, gdzie chcesz.
    2015-03-04 14: 05: 27Z
  3. kwiecień 2015. Działa. Dzięki. Dostałem „Przełączanie na bazę”. Jednak krok 6 to „Utwórz żądanie ściągnięcia” - > wprowadź komentarz - > „Utwórz żądanie ściągnięcia”. Koniec z 1 zatwierdzeniem przed oryginałem.
    2015-04-09 00: 08: 33Z
  4. @ cartland (lub inne) - tak, mówi: "Ta gałąź ma 1 zaangażowanie przed ..." Czy to jest coś, o co należy się martwić? Czy można pozbyć się tej wiadomości?
    2015-05-15 22: 59: 23Z
  5. czy nie byłoby lepiej z przyciskiem aktualizacji lub synchronizacji!
    2017-01-24 03: 32: 45Z

Oto oficjalny dokument GitHuba na temat Synchronizowanie widelca :

  

Synchronizowanie widelca

     

Konfiguracja

     

Zanim zsynchronizujesz, musisz dodać pilota, który wskazuje repozytorium nadrzędne. Być może zrobiłeś to, gdy początkowo się rozwidliłeś.

     

Wskazówka: Synchronizowanie widelca aktualizuje tylko lokalną kopię repozytorium; nie aktualizuje twojego repozytorium na GitHubie.

 
$ git remote -v
# List the current remotes
origin  https://github.com/user/repo.git (fetch)
origin  https://github.com/user/repo.git (push)

$ git remote add upstream https://github.com/otheruser/repo.git
# Set a new remote

$ git remote -v
# Verify new remote
origin    https://github.com/user/repo.git (fetch)
origin    https://github.com/user/repo.git (push)
upstream  https://github.com/otheruser/repo.git (fetch)
upstream  https://github.com/otheruser/repo.git (push)
     

Synchronizacja

     

Są dwa kroki wymagane do zsynchronizowania repozytorium z upstreamem: najpierw musisz pobrać z pilota, a następnie musisz scalić żądaną gałąź z lokalnym oddziałem.

     

Pobieranie

     

Pobieranie ze zdalnego repozytorium spowoduje wyświetlenie jego oddziałów i odpowiednich zatwierdzeń. Są one przechowywane w lokalnym repozytorium w specjalnych oddziałach.

 
$ git fetch upstream
# Grab the upstream remote's branches
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/otheruser/repo
 * [new branch]      master     -> upstream/master
     

Mamy teraz główną gałąź upstream w lokalnej gałęzi, upstream /master

 
$ git branch -va
# List all local and remote-tracking branches
* master                  a422352 My local commit
  remotes/origin/HEAD     -> origin/master
  remotes/origin/master   a422352 My local commit
  remotes/upstream/master 5fdff0f Some upstream commit
     

Scalanie

     

Teraz, gdy już pobraliśmy repozytorium upstream, chcemy połączyć jego zmiany z naszym lokalnym oddziałem. Spowoduje to zsynchronizowanie tej gałęzi z upstream, bez utraty naszych lokalnych zmian.

 
$ git checkout master
# Check out our local master branch
Switched to branch 'master'

$ git merge upstream/master
# Merge upstream's master into our own
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 lokalny oddział nie ma żadnych unikalnych zatwierdzeń, git wykona zamiast tego „szybkie przewijanie”:

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

Wskazówka: Jeśli chcesz zaktualizować swoje repozytorium na GitHub, postępuj zgodnie z instrukcjami tutaj

    
415
2015-09-21 19: 38: 46Z
  1. To aktualizuje mój lokalny widelec, ale mój widelec na Github.com nadal mówi „43 zatwierdza się za”. Musiałem użyć techniki lobzika, aby stworzyć dla mnie żądanie ściągnięcia, aby połączyć zmiany w moim widelcu Github.com.
    2015-01-23 17: 38: 08Z
  2. @ MichaelMcGinnis Po scaleniu lokalnie musiałbyś wprowadzić zmiany do github. git push origin master
    2015-02-11 22: 50: 56Z
  3. Może być mądry, aby użyć --follow-tags: stackoverflow.com/a/26438076 /667847
    2015-11-06 15: 19: 46Z
  4. Muszę to zrobić dla wszystkich oddziałów oddzielnie git merge upstream/master, a następnie wyewidencjonować gałąź i zrobić git merge upstream/develop
    2017-05-28 13: 02: 03Z
  5. stackoverflow.com/a/14074925/470749 było pomocne dla mnie, ponieważ dostałem Permission denied (publickey). fatal: Could not read from remote repository. podczas próby pobrania z konta Github na Facebooku w górę.
    2018-01-26 04: 28: 55Z

Wiele odpowiedzi kończy się przesunięciem widelca jeden zatwierdzony naprzód repozytorium nadrzędnego. Ta odpowiedź podsumowuje kroki znalezione tutaj , które będą przenieś widelec do tego samego zatwierdzenia, co rodzic .

  1. Zmień katalog na lokalne repozytorium.

    • Przełącz na gałąź master, jeśli nie masz git checkout master
  2. Dodaj rodzica jako zdalne repozytorium, git remote add upstream <repo-location>

  3. Numer git fetch upstream
  4. Wydanie git rebase upstream/master

    • Na tym etapie sprawdzasz, czy zatwierdza to, co zostanie scalone, wpisując git status
  5. Wydanie git push origin master

Więcej informacji na temat tych poleceń można znaleźć w krok 3 .

    
89
2016-04-19 04: 49: 14Z
  1. @ MT: Gdzie jednak wpisujesz te polecenia? Istota pytania, jak rozumiem, polega na ponownym zsynchronizowaniu osobistego widelca GitHub z głównym projektem i zrób to wszystko z GitHub . Innymi słowy, jak możesz zaktualizować swój zdalny widelec bez lokalnego repozytorium?
    2016-05-16 15: 33: 15Z
  2. @ JohnY Korzystanie z GitHub zawsze tworzy dodatkowe zatwierdzenie. Musisz to wszystko zrobić w powłoce na lokalnym repozytorium, aby uniknąć tego dodatkowego zatwierdzenia.
    2016-10-14 21: 51: 35Z

Od listopada 2013 r. zostało otwarte nieoficjalne żądanie funkcji z GitHub, aby poprosić je o dodanie bardzo prostej i intuicyjnej metody, aby utrzymać lokalny widelec w synchronizacji z upstream:

https://github.com/isaacs/github/issues/121

Uwaga: Ponieważ żądanie funkcji jest nieoficjalne, wskazane jest również skontaktowanie się z support@github.com, aby dodać obsługę dla takiej funkcji, która ma zostać zaimplementowana. Nieoficjalne żądanie funkcji powyżej może być wykorzystane jako dowód zainteresowania realizacją tego.

    
43
2016-04-19 04: 50: 46Z

Przedmowa: Twój widelec jest „początkiem”, a repozytorium, z którego się rozwidliłeś, to „upstream”.

Załóżmy, że sklonowałeś już swój widelec do komputera za pomocą polecenia takiego jak to:

 
git clone git@github.com:your_name/project_name.git
cd project_name

Jeśli zostanie podana, musisz kontynuować w tej kolejności:

  1. Dodaj „upstream” do sklonowanego repozytorium („origin”):

     
    git remote add upstream git@github.com:original_author/project_name.git
    
  2. Pobierz commits (i gałęzie) z „upstream”:

     
    git fetch upstream
    
  3. Przełącz na gałąź „master” swojego widelca („pochodzenie”):

     
    git checkout master
    
  4. Ukryj zmiany w gałęzi „master”:

     
    git stash
    
  5. Połącz zmiany z „głównej” gałęzi „upstream” w swoją „główną” gałąź swojego „pochodzenia”:

     
    git merge upstream/master
    
  6. Rozwiąż konflikty scalania, jeśli takie istnieją, i zatwierdź połączenie

     
    git commit -am "Merged from upstream"
    
  7. Wciśnij zmiany na widelec

     
    git push
    
  8. Odzyskaj ukryte zmiany (jeśli istnieją)

     
    git stash pop
    
  9. Skończyłeś! Gratulacje!

GitHub udostępnia również instrukcje dotyczące tego tematu: Synchronizacja widelca

    
40
2016-12-09 13: 53: 15Z
  1. Pomagał częściowo: czy git remote add upstream git@github.com:original_author/project_name.git jest tylko aliasem dla git remote add upstream https://github.com/original_author/project_name.git?
    2017-06-26 14: 44: 06Z
  2. Wilk , zgadując, że już to wiesz, ale dla potomność ... Jest to format ssh. help.github.com/articles/configuring-a-remote -for-a-fork
    2018-01-26 21: 02: 45Z
  3. Dziękuję bardzo. git stash i git stash pop część bardzo pomocna
    2019-03-04 05: 41: 27Z

Jeśli, tak jak ja, nigdy nie powiesz niczego bezpośrednio do master , co naprawdę powinieneś zrobić, możesz wykonać następujące czynności.

Z lokalnego klonu twojego widelca, stwórz swój własny pilot. Musisz to zrobić tylko raz:

 
git remote add upstream https://github.com/whoever/whatever.git

Następnie, gdy chcesz nadrobić zaległości w głównej gałęzi repozytorium, musisz:

 
git checkout master
git pull upstream master

Zakładając, że nigdy sam nie popełniłeś niczego na master, powinieneś już to zrobić. Teraz możesz popchnąć swojego lokalnego administratora do początkowego widelca GitHub. Możesz także ponownie podzielić gałąź rozwojową na aktualnego lokalnego mistrza.

Po początkowej konfiguracji nadrzędnej i kasie głównej, wystarczy uruchomić następującą komendę, aby zsynchronizować urządzenie główne z serwerem nadrzędnym: git pull upstream master .

    
37
2019-05-18 16: 55: 46Z

Na dzień tej odpowiedzi GitHub nie ( czy powinienem powiedzieć już nie? a>) ta funkcja w interfejsie internetowym. Możesz jednak poprosić support@github.com o dodanie swojego głosu.

W międzyczasie użytkownik bardiharborow, GitHub, stworzył narzędzie do wykonania tego: https://upriver.github.io/

Źródło jest tutaj: https://github.com/upriver/upriver.github.io

    
22
2016-09-14 14: 22: 15Z
  1. Chociaż uważam, że narzędzie jest dobrym pomysłem, rzeczywistość jest ZŁA. Z mojego konta załadowało się tylko 20 repo, a nawet stopka przekierowuje do strony, która nie istnieje. Jeśli to naprawię, będę wielkim adwokatem.
    2016-10-28 16: 07: 47Z
  2. Na dzień dzisiejszy z powodzeniem użyłem uprivera, aby zsynchronizować widelec z repozytorium repozytorium, więc działa to dla moich celów i będę z niego nadal korzystać.
    2017-07-17 02: 55: 19Z
  3. @ sorin Te 20 ograniczeń repo /rozgałęzień (a raczej 30) pochodzi z domyślnych ustawień stronicowania GitHub. Aby móc sobie z tym poradzić, muszą być jakieś adaptacje kodu.
    2018-01-18 08: 19: 20Z

Jeśli używasz GitHub dla Windows, teraz mają funkcję jednego kliknięcia, aby zaktualizować widły:

  1. Wybierz repozytorium w interfejsie użytkownika.
  2. Kliknij przycisk „Aktualizuj z użytkownika /gałęzi”, przycisk na górze.
15
2018-01-25 07: 06: 46Z
  1. To działa również w Github dla komputerów Mac.
    2017-03-12 17: 46: 26Z

Właściwie możliwe jest utworzenie gałęzi w twoim widelcu z dowolnego zatwierdzenia w górę w przeglądarce:

 Wpisz opis obrazu tutaj>> </a> </p>

<p> Następnie możesz pobrać tę gałąź do lokalnego klonu i nie będziesz musiał przesyłać wszystkich tych danych z powrotem do GitHub, gdy przesuniesz edycje do tego zatwierdzenia. Lub użyj interfejsu WWW, aby zmienić coś w tej gałęzi. </p>

<p> Jak to działa (zgaduję, nie wiem, jak dokładnie robi to GitHub): rozwidla przechowywanie obiektów i używa <a href = przestrzenie nazw , aby oddzielić odwołania użytkowników, dzięki czemu można uzyskać dostęp do wszystkich zatwierdzeń przez widelec, nawet jeśli nie istniały one w momencie rozwidlenia.

    
9
2018-01-19 03: 22: 48Z
  1. To jest świetne! Pozwala to uniknąć całkowicie bezsensownego przesyłania tych zatwierdzeń do github.
    2017-03-13 03: 34: 12Z

Wykonaj poniższe kroki. Próbowałem ich i to mi pomogło.

Zamówienie do oddziału

  

Składnia: gałąź git yourDevelopmentBranch
Przykład: git checkout master

Oddział repozytorium źródeł do pobierania najnowszego kodu

  

Składnia: git pull https://github.com/tastejs /awesome-app-ideas master
Przykład: git pull https://github.com/ORIGINAL_OWNER/ORIGINAL_REPO.git BRANCH_NAME

    
8
2016-04-19 04: 49: 53Z
  1. Jeśli używasz GitHub, możesz również chcieć wprowadzić zmiany do gałęzi GitHub. git push HttpsForYourForkOfTheRepo BRANCH_NAME
    2016-01-22 19: 34: 36Z

Aktualizuję moje rozwidlone repozycje za pomocą jednej linii:

 
git pull https://github.com/forkuser/forkedrepo.git branch

Użyj tego, jeśli nie chcesz dodawać kolejnego zdalnego punktu końcowego do projektu, tak jak inne rozwiązania zamieszczone tutaj.

    
5
2017-09-08 02: 00: 37Z
  1. Czy istnieją na to ograniczenia? tzn. czy dotyczy to tylko przypadków, w których nie dodano jeszcze zatwierdzeń, scaleń, żądań ściągania lub scalonych żądań ściągania od ostatniej aktualizacji?
    2017-09-11 07: 30: 55Z
  2. działa jak normalny ciąg z odległej gałęzi. Jeśli wykonałeś X na swoim lokalnym repo, a teraz jesteś Y zatwierdzającym pierwotne repo, spowoduje to, że Y przejdzie do twojego lokalnego oddziału i prawdopodobnie doprowadzi do pewnych konfliktów do rozwiązania.
    2017-09-11 20: 23: 23Z
  3. @ LightCC Nie różni się niczym od ciągnięcia z wcześniej dodanego pilota w ogóle, z wyjątkiem faktu, że nie dodałeś zdalny . Wadą jest to, że za każdym razem, gdy chcesz pull, musisz wprowadzić pełny adres URL repozytorium.
    2019-04-17 02: 34: 46Z

Jako uzupełnienie tej odpowiedzi, szukałem sposobu na zaktualizowanie wszystkich zdalnych gałęzi mojego sklonowanego repo ( pochodzenie ) z upstream za jednym razem. Tak to zrobiłem.

Zakłada się, że już skonfigurowałeś zdalne wskazujące na repozytorium źródłowe (gdzie pochodzenie zostało rozwidlone) i zsynchronizowałeś je z git fetch upstream.

Następnie uruchom:

 
for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git push origin refs/remotes/upstream/$branch:refs/heads/$branch; done

Pierwsza część tego polecenia wyświetla listę wszystkich głów w zdalnym repozytorium i usuwa SHA-1, po którym następuje prefiks nazwy oddziału refs/heads/.

Następnie dla każdej z tych gałęzi wypycha lokalną kopię gałęzi zdalnego śledzenia (refs/remotes/upstream/<branch> po stronie lokalnej) bezpośrednio do oddziału zdalnego początek (refs/heads/<branch> po stronie zdalnej).

Dowolny z nichPolecenia synchronizacji gałęzi e mogą się nie powieść z jednego z dwóch powodów: albo gałąź upstream została przepisana, albo przesunięto commits na tej gałęzi na swój widelec. W pierwszym przypadku, w którym niczego nie dopuściłeś do gałęzi na widelcu, możesz bezpiecznie naciskać (Dodaj przełącznik -f , tj. git push -f w powyższym poleceniu). W innym przypadku jest to normalne, ponieważ twoja gałąź rozwidlenia się rozeszła i nie możesz oczekiwać, że komenda sync zadziała, dopóki twoje commity nie zostaną ponownie połączone w upstream .

    
5
2018-06-08 04: 31: 05Z

Android Studio nauczył się teraz pracować z repozytoriami widelców GitHub (nie musisz nawet dodawać zdalnego repozytorium „upstream” za pomocą komendy konsoli).

Otwórz menu VCS Git

I zwróć uwagę na dwie ostatnie pozycje menu:

  • Przebuduj mój widelec GitHub

  • Utwórz żądanie ściągnięcia

Wypróbuj je. Pierwszy używam do synchronizacji mojego lokalnego repozytorium. W każdym razie gałęzie z nadrzędnego repozytorium zdalnego („upstream”) będą dostępne w Android Studio po kliknięciu „Rebase my GitHub fork”, a będziesz mógł z nimi łatwo korzystać.

(Używam Android Studio 3.0 z wtyczkami „Git integration” i „GitHub”).

 Wpisz opis obrazu tutaj>> </a> </p>
    </div>
<div class = 3

2018-01-19 03: 25: 32Z

Kiedy sklonowałeś swoje rozwidlone repozytorium, przejdź do ścieżki katalogu, w której znajduje się twój klon, i do kilku linii w swoim terminalu Git Bash.

 
$ cd project-name

$ git remote add upstream https://github.com/user-name/project-name.git
 # Adding the upstream -> the main repo with which you wanna sync

$ git remote -v # you will see the upstream here 

$ git checkout master # see if you are already on master branch

$ git fetch upstream

I tam jesteś dobry. Wszystkie zaktualizowane zmiany w głównym repozytorium zostaną wprowadzone do repozytorium wideł.

Polecenie „fetch” jest niezbędne, aby być na bieżąco z projektem: dopiero po wykonaniu „git fetch” zostaniesz poinformowany o zmianach, które twoi koledzy przenieśli na zdalny serwer.

Nadal możesz odwiedzić tutaj , aby uzyskać dalsze zapytania

    
3
2018-03-10 02: 21: 30Z

To zależy od rozmiaru twojego repozytorium i tego, jak go rozwidliłeś.

Jeśli jest to dość duże repozytorium, możesz chcieć zarządzać nim w specjalny sposób (np. historia upuszczania). Zasadniczo, możesz uzyskać różnice między wersjami bieżącymi i źródłowymi, zatwierdzić je, a następnie odebrać cherry do master.

Spróbuj przeczytać ten . Opisuje, jak obsługiwać duże repozytoria Git i jak je upstreamować z najnowszymi zmianami.

    
1
2018-11-03 19: 35: 06Z

Istnieją dwie główne rzeczy związane z utrzymaniem rozwidlonego repozytorium zawsze na dobre.

  

1. Utwórz gałęzie z widelca i dokonaj tam zmian .

Tak więc, kiedy twój Pull Request zostanie zaakceptowany, możesz bezpiecznie usunąć gałąź, ponieważ twój kod zostanie wysłany do twojego głównego widelca, gdy zaktualizujesz go z upstream. Dzięki temu twój mistrz zawsze będzie w stanie czystym, aby utworzyć nową gałąź, aby dokonać kolejnej zmiany.

  

2. Utwórz zaplanowaną pracę , aby program Fork Master automatycznie zaktualizował .

Można to zrobić za pomocą cron . Oto przykładowy kod, jeśli zrobisz to w Linuksie.

 
$ crontab -e

umieść ten kod na crontab file, aby wykonać zadanie co godzinę.

 
0 * * * * sh ~/cron.sh

następnie utwórz cron.shplik skryptu i interakcja git z ssh-agent i /lub

Sprawdź swoje rozwidlone repozytorium. Od czasu do czasu zawsze wyświetla to powiadomienie:

  

Ta gałąź ma nawet <upstream>: master .

 wprowadź opis obrazu tutaj>> </p>
    </div>
<div class = 0

2019-06-08 13: 34: 32Z

Jeśli ustawisz swój upstream. Sprawdź git remote -v, a to wystarczy.

 
git fetch upstream
git checkout master
git merge --no-edit upstream/master
git push
    
0
2019-06-11 05: 32: 06Z
źródło umieszczone tutaj