Bạn có thể xóa chi nhánh, nhưng hãy gắn thẻ nó trước để lịch sử của nó không biến mất. Bằng cách này, chi nhánh không hiển thị trong danh sách chi nhánh, điều này hy vọng sẽ ngăn cản mọi người làm việc trên nó, nhưng công việc sẽ không bị xóa vĩnh viễn (ngay cả sau khi chạy thu gom rác). Ví dụ: bất cứ khi nào tôi có một chi nhánh đã trở nên không còn liên quan, nhưng tôi không chuẩn bị để xóa nó vĩnh viễn, tôi gắn thẻ nó là "archive / < branch-name >".
Trong khi trên master
hoặc một số chi nhánh khác:
git tag archive/foo foo
git branch -D foo
Điều này tạo ra một thẻ có tên archive/foo
từ foo
nhánh trước khi xóa foo
. Bạn cũng có thể thêm thông báo vào thẻ, thông báo đó giải thích những gì có trong nhánh, tại sao nó tồn tại, tại sao bây giờ nó là ngõ cụt, v.v.
git tag -m 'Foo is deprecated in favor of bar' archive/foo foo
Khả năng ghi lại lý do tại sao một nhánh không được dùng nữa có lẽ là một lợi thế của việc gắn thẻ so với việc chuyển các nhánh sang một không gian tên thay thế.
Nếu bạn cần phục hồi một nhánh đã được lưu trữ theo cách này, thì đơn giản như sau:
git branch foo archive/foo
git tag -d archive/foo # Optional
Bây giờ chi nhánh đã trở lại như thể nó chưa bao giờ bị xóa.
--tags
tùy chọn đểgit push
) và sau đó xóa nhánh từ xa (sử dụng:<branch-to-delete>
refspec trong khi đẩy). Ví dụ:git tag archive/foo foo; git branch -D foo; git push --tags origin :foo