2012-07-06 32 views
36

Tôi muốn có một "bản sao" chính xác của một nhánh từ xa "được sao chép" đến một chi nhánh địa phương cụ thể.Cách lấy/sao chép chi nhánh git từ xa vào kho lưu trữ cục bộ

Ví dụ: một thành viên trong nhóm đã tạo một tính năng thử nghiệm mà anh ta đã kiểm tra thành một chi nhánh có tên là experiment trên kho lưu trữ từ xa. Tôi muốn có thể thanh toán chi nhánh mới trên kho lưu trữ cục bộ của mình và "sao chép" chi nhánh experiment, như là, đến chi nhánh mới được thanh toán của tôi.

Tôi không muốn hợp nhất mã đó với mã của mình - Tôi muốn ghi đè hoàn toàn mã của mình để tôi có thể xem xét kỹ những gì anh ấy đã thực hiện trên nhánh "thử nghiệm".

Làm cách nào để "nhận" (tìm nạp/kéo/bất kỳ ...) một nhánh từ xa mà người khác đã cam kết lưu trữ từ xa vào kho lưu trữ cục bộ của riêng bạn, theo cách không thử và thực hiện hợp nhất mã địa phương của riêng bạn?

+0

Tôi muốn giữ một bản sao riêng biệt của repo địa phương của tôi cho các trường hợp như thế này. Nó không chỉ giúp bạn tiết kiệm từ những sai lầm, nó cho phép tôi làm việc song song. – user1164937

Trả lời

67

Nếu bạn không quan tâm đến việc sáp nhập:

git reset --hard <remote>/<branch_name> 

này chính xác sẽ làm những gì bạn muốn: không có sáp nhập, không rebasing, chỉ cần đặt các chi nhánh địa phương để chính xác tình trạng tương tự như điều khiển từ xa được.

Tuy nhiên, trong trường hợp của bạn, bạn không cần điều đó. Bạn muốn tạo một mới chi nhánh địa phương có tình trạng tương tự như điều khiển từ xa, vì vậy xác định chi nhánh từ xa khi tạo một địa phương với git checkout:

git checkout -b <my_new_branch> <remote>/<branch_name> 

Bạn sẽ sử dụng git reset --hard nếu bạn đã có một chi nhánh địa phương (ví dụ với một số thay đổi trong đó), loại bỏ bất kỳ sửa đổi nào mà bạn đã tạo và thay phiên bản chính xác của nhánh từ xa.

Để đảm bảo rằng bạn có trạng thái mới nhất của chi nhánh từ xa, hãy sử dụng git fetch <remote> trước khi kiểm tra hoặc đặt lại.

+7

Không đặt lại để vứt bỏ các thay đổi của bạn. Làm git stash thay thế. Cách an toàn hơn. –

+2

Điều này đã không làm việc lúc đầu, nhưng đó là bởi vì tôi đã không bắt đầu bằng cách lấy từ xa. – David

+0

Tôi không hiểu câu trả lời này. Bạn có nhập "remote/" hoặc "/" thay thế "origin" hoặc cái gì khác cho ? – William

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