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.