2012-04-20 29 views
52

Tôi muốn thực hiện cam kết và đóng chi nhánh, mà không xóa nó khỏi lịch sử.Làm cách nào để đóng nhánh mà KHÔNG loại bỏ nó khỏi lịch sử trong git?

Với mercurial tôi muốn commit --close-branch, sau đó update trước đó và tiếp tục hoạt động. Với git ... Tôi bối rối.

+1

_Needless để nói, tìm kiếm những từ khóa này tôi chủ yếu tìm thấy cách khác xung quanh, tức là những người muốn xóa nội dung khỏi lịch sử._ –

+1

Tôi nghĩ điều gì làm cho điều này gây nhầm lẫn là thuật ngữ. Trong git tôi không nghĩ rằng bạn đã từng đóng một chi nhánh. Chính xác những gì "đóng nhánh" làm trong mercurial? – MikaelHalen

+2

Một hiệu ứng tuyệt vời của việc đóng nhánh trong mercurial là: không ai có thể tiếp tục đẩy lên đầu đó. - Có git-way cho điều đó không ?? –

Trả lời

70

Không có sự tương đương chính xác để đóng nhánh trong Git, vì các nhánh Git có trọng lượng nhẹ hơn so với Mercurial. Mercurial tương đương của họ là đánh dấu nhiều hơn các chi nhánh.

Nếu tôi hiểu chính xác, việc đóng một chi nhánh gần bằng Mercurial sẽ khiến nó biến mất khỏi danh sách chi nhánh, vì vậy bạn có thể đạt được điều tương tự bằng cách lưu trữ nó. Một usual practice là gắn thẻ đỉnh của nó là lưu trữ, và xóa nó:

git tag archive/<branchname> <branchname> 
git branch -d <branchname> 
git checkout master 

Các chi nhánh sẽ bị xóa, và có thể được tải về sau bằng cách xem thẻ, và tái tạo lại chi nhánh:

git checkout archive/<branchname> 
git checkout -b new_branch_name 
+0

Ít nhất trong git 1.9.1 tôi đã phải sử dụng 'git branch -D' thay vì' -d'. –

+0

-D là bắt buộc nếu nhánh tương ứng chưa được kết hợp hoàn toàn với master. – Simeon

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