Aktualizowanie lokalnego repozytorium za pomocą zmian z repozytorium GitHub

567

Mam projekt sprawdzony lokalnie z GitHub i od tego czasu w zdalnym repozytorium wprowadzono zmiany. Jakie jest prawidłowe polecenie, aby zaktualizować moją kopię lokalną o najnowsze zmiany?

Tomek
źródło
26
Warto zauważyć, że github opracował zestaw bardzo pouczających i pomocnych przewodników dotyczących korzystania z git i github. Znalazłem je bezcenne, kiedy po raz pierwszy przeprowadziłem się do git. help.github.com
Mark Embling

Odpowiedzi:

791

Prawdopodobnie:

git pull origin master
James Healy
źródło
28
Skarżył się: „Poprosiłeś o pobranie ze zdalnego„ źródła ”, ale nie określiłeś gałęzi. Ponieważ nie jest to domyślnie skonfigurowany pilot dla bieżącej gałęzi, musisz podać gałąź w wierszu poleceń.” Próbowałem więc „$ git pull origin master” i zadziałało dobrze.
Juan Lanus
8
git pull origin master
Andrzej Rehmann
1
Usunąłem niektóre pliki i to już nie przynosi, jakiś pomysł?
Wodnik Moc
1
czy wykonujemy polecenie git przed uruchomieniem tego? za każdym razem, gdy uruchamiam to polecenie, kończę na 18347213846 zmodyfikowanych plikach, których nawet nie dotknąłem !!!
Orkun Ozen,
5
Właśnie dowiedziałem się na własnej skórze, że wyciągnięcie nowej gałęzi zdalnego repozytorium nie tworzy gałęzi o tej nazwie lokalnie, ale zamiast tego przyciąga tę gałąź zdalną do dowolnej gałęzi lokalnej, która zostanie sprawdzona. Nie jestem pewien, jak cofnąć ten brak porzucania i ponownego klonowania repozytorium. W każdym razie wydaje się, że gałąź lokalna jest niezależna od gałęzi zdalnej i przed wyciągnięciem należy zawsze upewnić się, że znajdujesz się w zamierzonej gałęzi lokalnej.
Joe Lapp,
87

Powinno to działać dla każdego domyślnego repozytorium:

git pull origin master

Jeśli domyślna gałąź jest inna niż master, musisz podać nazwę gałęzi:

git pull origin my_default_branch_name
Andrzej Rehmann
źródło
2
Nie całkiem. fatal: Nie można znaleźć zdalnego sędziego
Victor Eijkhout
1
@Eijkhout probablt w Twojej sprawie repozytorium nie ma gałęzi master, a inna gałąź jest ustawiona jako domyślna
Andrzej Rehmann
62
git fetch [remotename]

Konieczne będzie jednak scalenie wszelkich zmian w lokalnych oddziałach. Jeśli jesteś w gałęzi, która śledzi zdalną gałąź w Github, to

git pull

najpierw pobierze, a następnie połączy się w śledzonej gałęzi

Gareth
źródło
5
Jeśli korzystasz z tej git fetchmetody, możesz także pobrać tagi git fetch -t. Jeśli jesteś zadowolony ze zmian ( git log HEAD..FETCH_HEAD), możesz je następnie połączyć git merge FETCH_HEAD.
Brad Grissom
16

To pytanie jest bardzo ogólne i mam kilka założeń, aby je nieco uprościć. Zakładamy, że chcesz zaktualizować swój masteroddział.

Jeśli nie wprowadziłeś żadnych zmian lokalnie, możesz użyć, git pullaby obniżyć wszelkie nowe zatwierdzenia i dodać je do swojego master.

git pull origin master

Jeśli dokonałeś zmian i chcesz uniknąć dodawania nowego zatwierdzenia scalania, użyj git pull --rebase.

git pull --rebase origin master

git pull --rebase będzie działać, nawet jeśli nie dokonałeś zmian i jest to prawdopodobnie twoje najlepsze połączenie.

Mahavir Chhasatiya
źródło
1
Rebase i niebezpieczeństwa związane z rebase: atlassian.com/git/tutorials/rewriting-history/git-rebase . Paragrafy 2 i 3 „Zrozumienia niebezpieczeństw związanych z rebase” naprawdę sprawiają, że tęsknię za zestawem poleceń SVN.
WillC
9

W przypadku już ustawionego wzorca początkowego wystarczy użyć poniższego polecenia -

git pull "https://github.com/yourUserName/yourRepo.git"
Shailendra
źródło