2013-03-01 44 views
6

Tôi có một chi nhánh develxuất xứ/cái chính đã được cập nhật. Tôi chạy git pull và tôi có thể thấy các thay đổi từ xa. Tuy nhiên, địa chỉ chính của tôi vẫn là nơi tôi đã lưu lại khi trước đây đã thực hiện git checkout devel. Tôi muốn hợp nhất số nguồn gốc/chủ thay đổi cho chi nhánh devel của tôi; một nhánh như vậy cũng tồn tại trên điều khiển từ xa.Cập nhật tổng thể cục bộ cho chủ từ xa từ một chi nhánh khác

Tôi không muốn thanh toán chi nhánh chính vì tôi sẽ kết thúc việc xây dựng lại một hệ thống lớn. Tôi có thể di chuyển địa chỉ chính của mình sang số nguồn gốc/chủ từ một chi nhánh khác không? Sau đó, tôi có thể làm một số merge từ devel. Hoặc chỉ cần dễ dàng hơn merge số nguồn gốc/chủ đến devel trực tiếp? Điều đó có vẻ như nó sẽ là rắc rối sau này?

Chỉnh sửa: Một cách khác để tránh vấn đề này là sử dụng không gian làm việc khác nhau với cùng một kho lưu trữ.
Xem: git new workdir - Bạn có thể có cả hai số chínhdevel được kiểm tra cùng một lúc nhưng sử dụng cùng một kho .git.

Trả lời

8

Sự khác biệt duy nhất giữa việc cập nhật của bạn địa phương master-origin/master và sau đó sáp nhập nó, so với chỉ sáp nhập origin/master trực tiếp, là tiền được tạo ra cam kết thông báo về việc hợp nhất (tốt, giả sử bạn cuối cùng cập nhật master). Vì vậy, tôi nói chỉ cần hợp nhất trong origin/master.


Điều đó nói rằng, để trả lời cho câu hỏi "làm thế nào để cập nhật một chi nhánh không check-out địa phương cho phù hợp với chi nhánh theo dõi của nó", bạn có thể nói

git push . origin/master:master 

này sử dụng các máy móc git push, nhưng một kho lưu trữ của . có nghĩa là "repo hiện tại". Chi nhánh nguồn của bạn được chỉ định là origin/master và chi nhánh từ xa của bạn là master, do đó, cập nhật này master để khớp với origin/master. Bạn có thể làm điều tương tự với lệnh hệ thống ống nước git update-ref, nhưng sử dụng git push thì đơn giản hơn và an toàn hơn một chút (vì nó sẽ ngăn việc hợp nhất không chuyển tiếp nhanh theo mặc định và tôi tin rằng nó cũng sẽ ngăn việc đẩy chi nhánh đã kiểm xuất của bạn) .

+4

Xin chào! Đây là một mẹo hay với push địa phương, tốt đẹp, cảm ơn! – poke

2

Theo mặc định, git pull sẽ tìm nạp từ nhánh từ xa và hợp nhất vào nhánh hiện tại của bạn. Nếu bạn không chỉ định chi nhánh trong lệnh git pull, Git sẽ sử dụng chi nhánh được chỉ định cho chi nhánh của bạn, thường là chi nhánh theo dõi từ xa.

Vì vậy, chạy git pull trong ngành devel bạn sẽ lấy devel chi nhánh từ xa và hợp nhất các thay đổi từ đó, nhưng không phải từ thạc sĩ.

Lưu ý rằng chỉ cần chạy git fetch sẽ cập nhật tất cả các nhánh từ xa cho điều khiển từ xa. Vì vậy, origin/master sẽ được cập nhật sau khi tìm nạp, cho phép bạn hợp nhất số đó vào chi nhánh hiện tại của bạn chỉ bằng cách sử dụng git merge origin/master.

Rõ ràng điều này sẽ không cập nhật địa phương chủ dù của bạn, vì vậy bạn có thể muốn cập nhật mà sau này cũng vậy, trước khi sáp nhập devel chi nhánh của bạn vào đó.

Các vấn đề liên quan