Оновіть локальну гілку зі змінами від відстежуваної віддаленої гілки


96

У мене є локальна гілка під назвою ' my_local_branch', яка відстежує віддалену гілку origin/my_remote_branch.

Тепер віддалена гілка оновлена, і я перебуваю на ' my_local_branch' і хочу внести ці зміни. Чи повинен я просто зробити:

git pull origin my_remote_branch:my_local_branch

Це правильний спосіб?

Відповіді:


72

Ви встановили вище за течією цієї гілки

(побачити:

git branch -f --track my_local_branch origin / my_remote_branch
# АБО (якщо my_local_branch наразі відмінено):
$ git branch --set-upstream-to my_local_branch origin / my_remote_branch

( git branch -f --trackне буде працювати, якщо гілка вилучена: git branch --set-upstream-to замість цього використовуйте другу команду , інакше ви отримаєте " fatal: Cannot force update the current branch.")

Це означає, що у вашій гілці вже налаштовано :

branch.my_local_branch.remote origin
branch.my_local_branch.merge my_remote_branch

Git вже має всю необхідну інформацію.
В такому разі:

# if you weren't already on my_local_branch branch:
git checkout my_local_branch 
# then:
git pull

достатньо.


Якби ви не встановили цей взаємозв'язок висхідної гілки, коли йшлося проштовхувати вашу ' my_local_branch', тоді git push -u origin my_local_branch:my_remote_branchбуло б достатньо простого , щоб просунути та встановити гілку вище за течією.
Після цього для подальших тягнень / штовхань, git pullабо git push, знову ж таки, було б достатньо.


В OP згадується, що вони вже відстежують віддалену гілку.
Amber

7
@Amber звідси моя відповідь: git pullдосить.
VonC

Перша команда git branch -f --track master origin/masterповертає помилку:fatal: Cannot force update the current branch.
Марк Крамер

@MarkKramer Так, я відредагував відповідь, щоб було зрозуміліше, що друга команда повинна використовуватися, якщо локальна гілка наразі виписана.
VonC

Вам також слід змінити його на --set-upstream-to, --set-upstreamзастарілий і буде видалений.
Марк Крамер

89

Ви не використовуєте :синтаксис - pullзавжди змінює поточну гілку. Отже:

git pull origin my_remote_branch

поки ви my_local_branchзареєструвались, зробите те, що хочете.

Оскільки у вас вже встановлено гілку відстеження, вам навіть не потрібно вказувати - ви можете просто зробити ...

git pull

поки ви my_local_branchзареєструвались, і воно оновиться з відстежуваної гілки.


Це повинна бути правильна відповідь. Це так просто.
m4l490n
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.