Jak zsynchronizować się ze zdalnym repozytorium Git?

94

Rozwidliłem projekt na githubie, dokonałem kilku zmian, na razie dobrze.

W międzyczasie repozytorium, z którego wyszedłem, zmieniło się i chciałbym wprowadzić te zmiany do mojego repozytorium. Jak mogę to zrobić ?

George Profenza
źródło

Odpowiedzi:

77

Ogólnie git pullwystarczy, ale nie jestem pewien, jaki układ wybrałeś (lub wybrałeś github).

Šimon Tóth
źródło
4
git pull nie zadziała, jeśli nie skonfigurujesz pilota, z którego ma pobierać, i gałęzi, z którą ma się scalić.
Abizern
Zakładam, że zostało to zrobione podczas fazy „tworzenia widelca”. O ile ta informacja nie została wyrzucona, nadal powinna tam być.
Šimon Tóth
użycie git pull z https nie zadziałało, ale z http udało się ... teraz jestem na bieżąco, dzięki!
George Profenza
@GeorgeProfenza To nie jest bezpieczne. Rozważ użyciessh
JVE999,
66

Zakładając, że ich aktualizacje są na serwerze głównym, a ty jesteś w gałęzi, w której chcesz scalić zmiany.

git remote add origin https://github.com/<github-username>/<repo-name>.git
git pull origin master

Zauważ również, że będziesz wtedy chciał odrzucić scalanie z powrotem do swojej kopii repozytorium:

git push origin master
Mark Hibberd
źródło
dodawanie działało, wyciąganie nie działało :(, otrzymałem błąd związany z https: błąd: Protokół https nie jest obsługiwany lub wyłączony w libcurl podczas uzyskiwania dostępu do github.com/mrdoob/three.js.git/info/refs krytyczny: żądanie HTTP nie powiodło się Podpowiedzi?
George Profenza
Jaka platforma? Wygląda na to, że jedna z zależności gita nie jest kompletna.
Mark Hibberd
Aby obejść ten problem, możesz również użyć protokołu git zamiast https, np. Git remote set-url git: //github.com/mrdoob/three.js.git - a następnie wypróbuj git pull.
Mark Hibberd
działa na osx. Udało mi się to zdobyć za pomocą git pull github.com/mrdoob/three.js.git master
George Profenza
3
literówka w poleceniach, myślę, że zaczynasz od original, a następnie przełączasz się naorigin
Benjol
46

Musisz dodać oryginalne repozytorium jako nadrzędne.

Wszystko jest dobrze opisane tutaj: https://help.github.com/articles/fork-a-repo

git remote add upstream https://github.com/octocat/Spoon-Knife.git
git fetch upstream
git merge upstream/master
git push origin master
Alex
źródło
5

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

git remote dodaj github (sklonowany adres URL dla oryginalnego repozytorium)

Następnie musisz wprowadzić zmiany do lokalnego repozytorium

git fetch github

Teraz będziesz mieć wszystkie gałęzie oryginalnego repozytorium w swoim lokalnym. Na przykład główną gałęzią będzie github/master. Z tymi gałęziami możesz robić, co chcesz. Połącz je w swoje gałęzie itp

Abizern
źródło
1
Proponuję nazwę upstreampilota.
vidstige
@vidstige Co nie jest wystarczająco opisowe, jeśli masz wiele pilotów do repozytorium. Na przykład często mam pilota na Githubie i pilota na Dropbox.
Abizern
cóż, to oczywiście ma sens. Dlatego wspaniale jest mieć możliwość samodzielnego nazwania ich. Uświadom sobie, że twoja konfiguracja jest prawdopodobnie mniej powszechna niż posiadanie jednego zdalnego o nazwie pochodzenia, który jest twoim własnym rozwidleniem, a następnie masz oryginał, który zwykle nosi nazwę "upstream".
vidstige
-8

W systemie Linux:

git add * 
git commit -a --message "Initial Push All"
git push -u origin --all
Gość
źródło
4
Jest to przeciwieństwo tego, czego szukał OP.
Ryan