Cách xóa một nhánh trong Git cục bộ và từ xa

Xóa 1 branch trong GitHub không khó. Nếu chưa biết, mời bạn cùng Download.vn tìm hiểu cách xóa nhánh trên GitHub như thế nào nhé!

Branch - Nhánh là gì?

Các hệ thống kiểm soát phiên bản như Git dùng thuật ngữ branch như một “nhánh cây”. Mỗi nhánh bắt nguồn từ một nhánh khác, và có điểm gốc ở thân cây. Branch cho phép bạn tạo các đường lập trình riêng để có thể xử lý từng nhánh một mà không ảnh hưởng tới các phần khác trong dự án.

Sau khi sửa đổi, nhánh là khái niệm quan trọng nhất cần quan tâm trong kiểm soát phiên bản. Git cũng không ngoại lệ. Nó khuyến khích người dùng sử dụng nhiều nhánh nhất có thể. Ngoài ra, chúng còn rất dễ được xử lý khi cần.

Cách bạn dùng nhánh như thế nào phụ thuộc vào dự án đang làm việc. Bạn có thể chọn phân nhánh main theo mặc định và một branch develop riêng. Hoặc bạn có thể dùng nhánh mới cho mỗi tính năng và sửa nó.

Git nổi bật với tính năng phân nhánh siêu nhẹ. Nhờ nó, bạn có thể xử lý đồng thời các giai đoạn phát triển song song. Nhiều quy trình Git bao gồm có cả các nhánh dài hạn và tạm thời. Vì thế, xóa nhánh là tác vụ khá thường xuyên trong quá trình phát triển. Thỉnh thoảng, bạn còn cần xóa nhánh được chia sẻ từ máy chủ từ xa hoặc nhánh cục bộ.

Tại sao cần xóa nhánh trong Git?

Nếu lần đầu sử dụng Git, chắc chắn bạn sẽ tạo nhánh, rồi có lúc thấy nó không còn cần thiết nữa. Hoặc bạn thử nghiệm phân nhánh rồi muốn xóa sau đó. Hành động này ổn bởi phân nhánh trong Git là một quá trình nhẹ nhàng. Nó chạy nhanh và sử dụng không gian đĩa hiệu quả.

Vì thế, nhiều quy trình phát triển Git khuyến khích phân nhánh, thậm chí cho cả các nhiệm vụ nhỏ và ngắn. Ví dụ, lập trình viên thường tạo nhánh để sửa một lỗi. Điều này đúng ngay cả khi nó chỉ liên quan tới một tác giả thay đổi một dòng code trong một file.

Vì những lí do kể trên, tạo và xóa nhánh là hoạt động bạn cần hiểu rõ khi dùng Git.

Một mẫu Repository có nhánh

Các ví dụ dưới đây tham chiếu tới một repository mẫu với cấu trúc như sau:

$ git branch -vv
1 dev 1ae41e8 [origin/dev] first commit
2 * main 1ae41e8 [origin/main] first commit

Lưu ý mỗi nhánh cục bộ có một nhánh upstream tương ứng từ remote: origin.

Xóa một nhánh bằng dòng lệnh

Cú pháp lệnh cơ bản bản để xóa một nhánh:

git branch (-d | -D) [-r] <branchname>…

Dạng đơn giản nhất của lệnh xóa một nhánh cục bộ, cung cấp toàn bộ thay đổi của nó đã được hợp thành:

$ git branch -d dev

Bạn không thể xóa nhánh hiện đang hoạt động. Nếu làm như thế, bạn sẽ nhận được thông báo như sau:

error: Cannot delete branch 'main' checked out at '/tmp/sandbox'

Khi nhập đúng lệnh và mọi thứ đi đúng hướng, bạn sẽ nhận được thông báo xác nhận:

Deleted branch dev (was 1ae41e8).

Nếu xóa một nhánh chỉ có trong nội bộ, chưa hợp nhất thay đổi, bạn sẽ mất những thay đổi đó. Vì thế, Git sẽ từ chối xóa nhánh trong tình huống này, mặc định:

error: The branch ‘dev’ is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev’.

Khi thông báo lỗi này xuất hiện, bạn có thể buộc xóa bằng flag -D. Tuy nhiên, Git sẽ cho phép bạn xóa một nhánh cục bộ chưa hợp nhất nếu nó nằm trên máy chủ từ xa.

warning: deleting branch ‘dev’ that has been merged to
'refs/remotes/origin/dev’, but not yet merged to HEAD.
Deleted branch dev (was 9a6d20b).

Cách xóa nhánh Git từ xa khác một chút. Bạn sẽ phải dùng lệnh git push cùng với flag -d để xóa. Sau đó, cung cấp tên của máy chủ từ xa (thường là origin) và tên nhánh:

$ git push -d origin dev
To github.com:bobbykjack/sandbox.git
- [deleted] dev

Xóa nhánh cục bộ và từ xa bằng GitHub Desktop

Khác chương trình git dòng lệnh, app desktop của GitHub sẽ chỉ cho phép bạn xóa nhánh đang hoạt động. Bạn có thể thực hiện tác vụ này qua menu Branch, bằng cách xóa tùy chọn Delete và xác nhận nó.

Xóa nhánh bằng GitHub Desktop

GitHub Desktop sẽ không cho phép bạn xóa nhánh mặc định . Ví dụ: main-even dù bản thân Git có hỗ trợ. Nếu nhánh mặc định hiện đang hoạt động, app này sẽ tắt tác vụ menu.

Nếu đó là một nhánh từ xa, GitHub Desktop cung cấp tùy chọn xóa nó từ máy chủ từ xa.

Xóa nhánh từ xa

Xóa nhánh trong Git bằng GitKraken

GitKraken hiện nhánh cục bộ và từ xa của repository ở sidebar bên tay trái. Bạn phải xóa riêng từng cái.

Trỏ chuột qua tên nhánh phù hợp và click menu tác vụ Branch (icon 3 dấu chấm). Từ menu này, chọn Delete <branch name>:

GitKraken xóa nhánh Git cục bộ

Bạn sẽ thấy một thông báo xác nhận đây là một hành động phá hủy. Bạn có thể xác nhận muốn tiếp tục bằng nút Delete.

Thông báo xóa nhánh trong Git

Phản hồi hoạt động mặc định của chương trình dòng lệnh Git. Trước tiên bạn phải chuyển sang một nhánh khác, thay thế nhánh đang xóa. Nếu không, bạn sẽ thấy thông báo lỗi:

Phần mềm hiện cảnh báo khi có lỗi xảy ra

Xóa nhánh trong Git cục bộ và từ xa bằng Tower

Xóa một nhánh bằng Tower tương tự như GitKraken. Các nhánh local và remote nằm trong bảng ở bên tay trái. Click chuột phải và một nhánh bất kỳ, rồi chọn Delete từ menu ngữ cảnh:

Xóa nhánh cục bộ trong GitHub

Sự khác biệt chính ở đây là một nhánh từ xa có thể được xóa cùng nhánh cục bộ khi xác nhận:

Xác nhận xóa nhánh trong Git

Xóa nhánh trên GitHub

GitHub chỉ hoạt động như một nguồn từ xa, vì thế, mặc định các nhánh phải nằm ở remote. Nếu bạn xóa một nhánh bằng web GitHub, bạn phải xóa nhánh cục bộ tương ứng bằng một phương pháp ở trên.

Tương tự như GitHub Desktop, web GitHub không cho phép bạn xóa nhánh mặc định. Tuy nhiên, xóa một nhánh vẫn rất đơn giản. Từ trang code của repository, click link branches, chọn nhánh để xóa, rồi click icon Delete this branch (giống thùng rác).

Xóa nhánh trong web GitHub

Lưu ý, không có kiểm tra cho các thay đổi chưa được hợp nhất, vì vậy, trên GitHub, nhánh sẽ bị xóa ngay lập tức. Tuy nhiên, do nó luôn đại diện cho một nhánh từ xa, đây sẽ là hành vi mà bạn mong đợi.

Lưu ý, sau khi xóa, bạn sẽ thấy một nút bấm để Restore (khôi phục) nhánh. Tuy nhiên, đây chỉ là tính năng hoàn tác (Undo), trong trường hợp bạn vô tình click nhầm icon xóa. Đừng dựa vào nó bởi ngay khi bạn làm mới hay thoát trang này, bạn sẽ mất tùy chọn đó.

Kết quả sau khi xóa nhánh Git

Xóa nhánh Git cục bộ và từ xa bằng Bitbucket

Bitbucket giống như GitHub sẽ không cho phép bạn xóa nhánh mặc định. BitBucket gọi nó là Main branch trong cài đặt Repository. Bạn có thể xóa bất kỳ nhánh khác được liệt kê trong tab Branches, qua menu Actions tương ứng:

Tác vụ xóa nhánh trên Bitbucket

Bạn cũng có thể xóa nhiều hơn một nhánh cùng lúc nếu đang thực hiện quá trình dọn dẹp lớn.

Hoàn thành xóa nhánh trên Bitbucket

Trên đây là cách xóa nhánh trong Git. Nếu biết thêm cách nào khác, hãy chia sẻ cùng độc giả Download.vn nhé!

  • 6.316 lượt xem
👨 Vy Vy Cập nhật: 05/05/2022
Xem thêm: GitHub
Sắp xếp theo