Jak „wyciągnąć” z lokalnego oddziału do innego?


231

To brzmi tak prosto, ale po prostu nie mogę tego rozgryźć. Jakiś czas temu stworzyłem gałąź eksperymentalną, a teraz chciałbym wprowadzić wszystkie zmiany, które zaszły w Master, odkąd to zrobiłem. To wszystko lokalne. Chcę wyciągnąć z lokalnego mistrza do lokalnego my_branch, ale nie mogę tego zrobić. To wydaje się nie działać, mówiąc mi, że master nie jest repozytorium git:

git pull master

Odpowiedzi:


339

musisz powiedzieć gitowi, skąd ma pobierać, w tym przypadku z bieżącego katalogu / repozytorium:

git pull . master

ale pracując lokalnie, zwykle po prostu wywołujesz scalanie (ściągnij wewnętrzne połączenia scalające):

git merge master

1
Podoba mi się, git pull . masterponieważ myślę, że sprawdzi, czy jest coś nowego od pochodzenia. Czy to prawda?
Josiah Yoder

1
@JosiahYoder nie, pull .konkretnie mówi Gitowi, aby pobierał z repozytorium znajdującego się w .(tj. Bieżącego katalogu / repozytorium). originjest tylko skrótem dla „dowolnej lokalizacji repozytorium zdefiniowanej w .git/configpliku (zwykle konfigurowanej automatycznie podczas klonowania repozytorium)
knittl

1
O! Więc git pull . masterzacznie pobierać z lokalnego repozytorium zamiast źródła? (Nie sprowadzić z pochodzenia !?) Czy jest jakaś zaleta git pull . masternad git merge masterczym?
Josiah Yoder,

2
@JosiahYoder tak dokładnie, „ściągnie” to z lokalnego repozytorium zamiast z repozytorium źródłowego. Pobieranie nie jest wykonywane (ponieważ wszystko z lokalnego repozytorium już jest!). Nie ma przewagi - oba polecenia działają mniej więcej tak samo. Jeśli robisz szybkie przewijanie do przodu, możesz użyć push . origin/branch:branch(nie ściągaj), aby zaktualizować lokalne oddziały, bez wcześniejszego ich sprawdzenia.
knittl

Chwalę cię. Dzięki sile Greyskulla!
R Claven,

45

To, czego szukasz, łączy się.

git merge master

Dzięki pullniemu pobierz zmiany ze zdalnego repozytorium i połącz je z bieżącym oddziałem.


38

Dość stary post, ale może pomóc komuś nowemu wejść w git.

Pójdę z

git rebase master
  • dużo czystsza historia logów i brak zatwierdzeń scalania (jeśli wykonane poprawnie)
  • trzeba radzić sobie z konfliktami, ale nie jest to takie trudne.

1
zespół programistów może z pewnością zarządzać procesami rozgałęziającymi na wiele sposobów. Osobiście używam gita od 8 lat i nigdy nie musiałem się opierać. Zawsze używam scalania i zawsze spełniało ono moje potrzeby. Z pewnością przy rebase, podobnie jak scalaniu, mogą pojawić się scenariusze, w których git nie może automatycznie zdecydować o prawidłowym wyniku „scalenia” dwóch zestawów zmian. Odnośnie do tego, co powiedziałeś o „czystszej” historii zatwierdzeń. Osobiście wolę zachować całą historię zatwierdzeń, na wypadek, gdybym kiedykolwiek musiał wykonać „archeologię zatwierdzeń” (jak to często bywa!)
user3441604

-1

Jeśli szukasz zupełnie nowego przyciągnięcia z innej gałęzi, takiej jak lokalna do opanowania, możesz to zrobić.

git commit -m "Initial Commit"
git add .
git pull --rebase git_url
git push origin master
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.