Cập nhật chi nhánh cục bộ với các thay đổi từ chi nhánh từ xa được theo dõi


96

Tôi có một chi nhánh cục bộ tên là ' my_local_branch', theo dõi một chi nhánh ở xa origin/my_remote_branch.

Bây giờ, chi nhánh từ xa đã được cập nhật và tôi đang ở trên ' my_local_branch' và muốn thực hiện những thay đổi đó. Tôi chỉ nên làm:

git pull origin my_remote_branch:my_local_branch

Đây có phải là cách chính xác?

Câu trả lời:


72

Bạn đã đặt ngược dòng của nhánh đó

(xem:

git branch -f --track my_local_branch origin / my_remote_branch
# HOẶC (nếu my_local_branch hiện đã được thanh toán):
nhánh $ git --set-up-to my_local_branch origin / my_remote_branch

( git branch -f --tracksẽ không hoạt động nếu chi nhánh được kiểm tra: hãy sử dụng lệnh thứ hai git branch --set-upstream-to thay thế, nếu không bạn sẽ nhận được " fatal: Cannot force update the current branch.")

Điều đó có nghĩa là chi nhánh của bạn đã được định cấu hình với:

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

Git đã có tất cả các thông tin cần thiết.
Trong trường hợp đó:

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

Là đủ.


Nếu bạn không thiết lập mối quan hệ nhánh ngược dòng khi nó đẩy '' của bạn my_local_branch, thì chỉ cần một cách đơn giản git push -u origin my_local_branch:my_remote_branchlà đủ để đẩy thiết lập nhánh ngược dòng.
Sau đó, đối với các lần kéo / đẩy tiếp theo, git pullhoặc git pushsẽ là quá đủ.


OP đề cập rằng họ đã theo dõi chi nhánh từ xa.
Amber

7
@Amber do đó câu trả lời của tôi: git pulllà đủ.
VonC

Lệnh đầu tiên git branch -f --track master origin/mastertrả về một lỗi:fatal: Cannot force update the current branch.
Đánh dấu Kramer

@MarkKramer Có, tôi đã chỉnh sửa câu trả lời để làm rõ ràng hơn lệnh thứ hai sẽ được sử dụng nếu chi nhánh cục bộ hiện đã được kiểm tra.
VonC

Bạn cũng nên thay đổi nó thành --set-upstream-to, --set-upstreamkhông dùng nữa và sẽ bị xóa.
Mark Kramer

89

Bạn không sử dụng :cú pháp - pullluôn sửa đổi nhánh hiện đã trả phòng. Như vậy:

git pull origin my_remote_branch

trong khi bạn đã my_local_branchtrả phòng sẽ làm những gì bạn muốn.

Vì bạn đã đặt nhánh theo dõi, bạn thậm chí không cần chỉ định - bạn chỉ có thể làm ...

git pull

trong khi bạn đã thanh toán my_local_branchvà nó sẽ cập nhật từ nhánh được theo dõi.


Đây phải là câu trả lời chính xác. Nó đơn giản như vậy.
m4l490n Ngày
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.