Tôi có nên xóa một chi nhánh sau khi hợp nhất nó không?


94

Sau khi hợp nhất một chi nhánh, bạn có xóa nó khỏi kho lưu trữ không?
Tuy nhiên, đó là một thực hành tốt hay không?

Tôi thường tạo rất nhiều nhánh, vì tôi không muốn phá vỡ bản phát hành hiện tại của mình và tôi muốn xóa chúng để giữ mọi thứ theo thứ tự.
Tuy nhiên, nếu bạn làm việc với Assembla hoặc GitHub, các yêu cầu hợp nhất của bạn từ các nhánh cũ sẽ được lưu trên trang web, vì vậy nếu bạn xóa chúng, bạn sẽ gặp lỗi vì nó sẽ không thể tìm nạp chúng ...

Thông thường làm thế nào để quản lý điều đó?

Câu trả lời:


72

Không có vấn đề gì khi xóa các nhánh đã được hợp nhất. Tất cả các cam kết vẫn có trong lịch sử và ngay cả trong giao diện GitHub, chúng vẫn sẽ hiển thị (ví dụ: bài PR này đề cập đến một nhánh rẽ mà tôi đã bị xóa sau khi PR được chấp nhận).


Bạn đã nói rằng tất cả các cam kết vẫn còn trong lịch sử. Nếu tôi xem một dự án trên github.com, tôi thấy rằng điều này là đúng. Tuy nhiên, trong ứng dụng Github dành cho máy tính để bàn dành cho Mac, có vẻ như bạn không còn thấy lịch sử cam kết cho nhánh đã hợp nhất. Tôi có nhầm không?
Peacetype

Tôi muốn nói thêm rằng nếu bạn không sử dụng ứng dụng khách git, đặc biệt là không sử dụng ứng dụng với gui, thì việc có các nhánh có thể hữu ích để hiểu rõ nhật ký của bạn. Đó là, vì bạn không có github / gitlab / gui khác để xem, việc giữ lại tên nhánh cho phép bạn có một nơi đơn giản để tham chiếu lịch sử ngoài lịch sử cam kết - nếu không thì sẽ bị mất khi xóa nhánh. Ai đó vui lòng cho tôi biết nếu câu nói cuối cùng này là sai.
Raj

@Raj bạn đã có điều đó rồi, dưới dạng Merge branch fix-foo-barthông báo cam kết. Hãy thử git log --grep="Merge branch", sau đó thả neo quan tâm của riêng bạn qua git checkout -b curious-change. Ngoài ra, không có gì bị mất khi xóa một chi nhánh - ngoại trừ con trỏ "tên chi nhánh → cam kết" (tên chi nhánh thực sự là gì, không quan trọng cục bộ hay từ xa).
ulidtko

@ fred-foo Tuy nhiên, câu hỏi liệu đó có phải là một phương pháp hay không vẫn chưa được trả lời. (Tôi có cùng một câu hỏi)
Esger

27

Tôi chắc chắn dọn dẹp các chi nhánh của mình sau khi chúng được sáp nhập vào.

Chúng tôi sử dụng GitLab và hợp nhất các yêu cầu tại nơi làm việc, vì vậy thông tin lịch sử về các chi nhánh được lưu trữ ở đó; Tôi không cần chúng làm lộn xộn danh sách chi nhánh của mình và khi tôi nhìn vào nhánh rẽ của đồng nghiệp, lý tưởng nhất là tôi chỉ muốn xem các nhánh phát triển tích cực hiện tại của họ. Nếu tôi đang cố gắng xem một số mã trên chi nhánh của họ, tôi muốn chỉ có thể xem qua một vài chi nhánh hiện đang hoạt động và không phải mọi tính năng hoặc bản sửa lỗi mà họ đã từng bắt đầu hoạt động.

Những điều trên cũng áp dụng cho BitBucket và GitHub.

Lý do duy nhất bạn có thể có để không xóa một nhánh sau hợp nhất là để bạn biết nơi một tính năng nhất định đã kết thúc, nhưng các cam kết hợp nhất (và git merge --no-ffnếu bạn thực sự muốn) khiến điều đó không liên quan.


3
Rõ ràng GitHub luôn làm - không-ff nên chúng tôi sẽ không đánh mất sự thật rằng đây là một nhánh ngay cả trong những tình huống đó.
joeytwiddle

7
@joeytwiddle: giả sử bạn đang sử dụng giao diện riêng của GitHub để hợp nhất chi nhánh, vâng!
Asherah


0

Chỉ cần làm rõ, nhánh, theo quan điểm git, chỉ là liên kết đến một số cam kết. Bằng cách xóa nhánh, bạn sẽ không xóa các cam kết khỏi git repo. Tất nhiên, các cam kết tách rời sẽ được làm sạch sau một thời gian thông qua trình thu gom rác git.

FYI: Chúng tôi thường hợp nhất các nhánh thành tổng thể thông qua giao diện bitbucket. Ở đó bạn có thể đặt delete feature branch after mergecờ.

Nếu bạn cần xử lý các chi nhánh quá cũ, bạn có thể tìm kiếm một số tiện ích, ví dụ như tiện ích này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.