Perbarui cabang lokal dengan perubahan dari cabang jarak jauh yang dilacak


96

Saya memiliki cabang lokal bernama ' my_local_branch', yang melacak cabang jarak jauh origin/my_remote_branch.

Sekarang, cabang jarak jauh telah diperbarui, dan saya berada di ' my_local_branch' dan ingin menarik perubahan itu. Haruskah saya melakukan:

git pull origin my_remote_branch:my_local_branch

Apakah ini cara yang benar?

Jawaban:


72

Anda telah mengatur hulu cabang tersebut

(Lihat:

git branch -f --track my_local_branch origin / my_remote_branch
# ATAU (jika my_local_branch saat ini diperiksa):
$ git branch --set-upstream-to my_local_branch origin / my_remote_branch

( git branch -f --tracktidak akan berfungsi jika cabang dicentang: gunakan perintah kedua git branch --set-upstream-to sebagai gantinya, atau Anda akan mendapatkan " fatal: Cannot force update the current branch.")

Itu berarti cabang Anda sudah dikonfigurasi dengan:

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

Git sudah memiliki semua informasi yang diperlukan.
Dalam hal itu:

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

cukup.


Jika Anda belum membangun hubungan cabang upstream ketika harus mendorong ' my_local_branch' Anda, maka yang sederhana git push -u origin my_local_branch:my_remote_branchsudah cukup untuk mendorong dan mengatur cabang upstream.
Setelah itu, untuk tarikan / dorongan berikutnya, git pullatau git pushakan, sekali lagi, sudah cukup.


OP menyebutkan bahwa mereka sudah melacak cabang jarak jauh.
Amber

7
@Amber maka jawaban saya: git pullcukup.
VonC

Perintah pertama git branch -f --track master origin/mastermengembalikan kesalahan:fatal: Cannot force update the current branch.
Mark Kramer

@MarkKramer Ya, saya telah mengedit jawabannya untuk memperjelas perintah kedua yang akan digunakan jika cabang lokal sedang diperiksa.
VonC

Anda juga harus mengubahnya menjadi --set-upstream-to, --set-upstreamtidak digunakan lagi dan akan dihapus.
Mark Kramer

89

Anda tidak menggunakan :sintaks - pullselalu mengubah cabang yang saat ini diperiksa. Jadi:

git pull origin my_remote_branch

sementara Anda telah my_local_branchmemeriksa akan melakukan apa yang Anda inginkan.

Karena Anda sudah menetapkan cabang pelacakan, Anda bahkan tidak perlu menentukan - Anda bisa melakukan ...

git pull

sementara Anda telah my_local_branchmemeriksa, dan itu akan diperbarui dari cabang yang dilacak.


Ini harus menjadi jawaban yang benar. Sesederhana itu.
m4l490n
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.