2010-03-01 30 views
77

Tôi có một nhánh chủ đề địa phương đang theo dõi một chi nhánh từ xa. Vì lợi ích của đối số, nói cam kết lịch sử giống như thế này:Git: Hủy tất cả thay đổi trên chi nhánh địa phương được phân tách

A--B--C--O1--O2--O3 (origin/phobos) 
     \ 
     L1--L2--L3 (phobos) 

Sau khi nhìn vào tương đối cam kết lịch sử, bây giờ tôi muốn loại bỏ tất cả các thay đổi đối với phobos chi nhánh địa phương và làm cho nó trở lại để trở thành một trực tiếp bản sao của origin/phobos, do đó lịch sử địa phương trông như thế này:

A--B--C--O1--O2--O3 (phobos origin/phobos) 

tôi thực sự không muốn thay đổi địa phương để các chi nhánh phobos, và tôi thực sự không muốn mọi mục hợp nhất để hiển thị trong các kho lưu trữ nguồn gốc sau đó. (Vì vậy, chỉ cần sáp nhập không phải là những gì tôi có trong tâm trí.)

Điều này có vẻ như nó phải được thực sự dễ dàng, nhưng google-fu của tôi đã thất bại tôi. Làm thế nào để tôi làm điều này?

Trả lời

60

Xóa chi nhánh, sau đó tái tạo nó:

$ git branch -D phobos 
$ git checkout --track -b phobos origin/phobos 
+0

Tuyệt vời. Điều này làm việc hoàn hảo. –

+25

Một vấn đề với cách tiếp cận này so với việc đặt lại đầu của nhánh, là việc xóa nhánh sẽ thổi đi việc reflog của nhánh. Mặt khác, việc thiết lập lại nhánh không chỉ duy trì việc reflog mà còn ghi lại việc đặt lại trong reflog. Điều này làm cho hoạt động dễ dàng đảo ngược sau này, nếu cần. –

+5

@Electrons_Ahoy Bạn nên thay đổi câu trả lời được chấp nhận ở đây thành của Dan (để những người như tôi, những người đã Google tìm cách để làm điều đó có khả năng chọn phương thức an toàn hơn). –

219
git checkout phobos 
git reset --hard origin/phobos 

này cho Git để thiết lập lại người đứng đầu phobos với cùng cam kết như origin/phobos, và để cập nhật cây làm việc cho phù hợp.

+24

IMO này phải là câu trả lời được chấp nhận; nó đưa ra lệnh "reset" để cấy con trỏ nhánh, thay vì thực hiện phẫu thuật với việc xóa/tái tạo. – vdboor

+0

Thực ra, tôi đã thử cái này đầu tiên và nó ném một tấn lỗi do bản sao cục bộ gần như không sử dụng được. Xóa/tạo lại có thể kém thanh lịch hơn, nhưng tôi không phải hỏi bất kỳ câu hỏi tiếp theo nào. –

+3

@Electrons_Ahoy: Hmm, điều đó chắc chắn không bình thường. Việc thiết lập lại này thường là một hoạt động không có sự cố nếu repo của bạn hoạt động tốt. –

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