Với Git 2.15 (Q4 2017), " git branch
" đã học " -c/-C
" để tạo một nhánh mới bằng cách sao chép một nhánh hiện có.
Xem cam kết c8b2cec (18 tháng 6 năm 2017) của Ævar Arnfjorð Bjarmason ( avar
) .
Xem cam kết 52d59cc , cam kết 5463caa (18 tháng 6 năm 2017) bởi Sahil Dua ( sahildua2305
) .
(Được hợp nhất bởi Junio C Hamano - gitster
- trong cam kết 3b48045 , ngày 03 tháng 10 năm 2017)
branch
: thêm tùy chọn --copy
( -c
) để đi với --move
( -m
)
Thêm khả năng cho --copy
một nhánh và cấu hình và cấu hình của nó, điều này sử dụng cùng một máy móc cơ bản như tùy chọn --move
( -m
) ngoại trừ việc reflog và cấu hình được sao chép thay vì được di chuyển.
Đây là hữu ích cho ví dụ như sao chép một chi nhánh chủ đề lên phiên bản mới, ví dụ như work
để work-2
sau khi nộp các work
chủ đề vào danh sách, trong khi vẫn giữ tất cả các thông tin theo dõi và cấu hình khác mà đi với các chi nhánh, và không giống như --move
việc giữ chi nhánh đã-trình khác xung quanh cho tài liệu tham khảo.
Lưu ý: khi sao chép một nhánh, bạn vẫn ở trên nhánh hiện tại của mình.
Như Junio C Hamano giải thích:
Khi tạo một nhánh mới B
bằng cách sao chép nhánh A
đó là nhánh hiện tại, nó cũng cập nhậtHEAD
để trỏ đến nhánh mới.
Có lẽ nó đã được thực hiện theo cách này vì " git branch -c A B
" cõng thực hiện trên " git branch -m A B
",
Điều này không phù hợp với mong đợi thông thường.
Nếu tôi đang ngồi trên một chiếc ghế màu xanh, và ai đó đến và sơn lại nó thành màu đỏ, tôi sẽ chấp nhận cuối cùng ngồi trên một chiếc ghế màu đỏ (thay vào đó, tôi cũng không thể đứng, vì không còn chiếc ghế màu xanh yêu thích của tôi nữa ).
Nhưng nếu ai đó tạo ra một chiếc ghế đỏ mới, tạo mẫu cho nó sau chiếc ghế màu xanh tôi đang ngồi, tôi không mong đợi được khởi động khỏi chiếc ghế màu xanh và kết thúc bằng việc ngồi trên chiếc ghế màu đỏ mới.
git branch -c A B
. Xem câu trả lời của tôi dưới đây