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

0
72
Rate this post

Có rất nhiều lí do khiến bạn cần xóa nhánh (branch) trong GitHub. Thật may, xóa branch trong Git thật sự dễ dàng.

Một trong số tính năng mạnh nhất của Git là phân nhánh siêu nhẹ. Chúng cho phép bạn làm việc trên các giai đoạn phát triển song song hiệu quả. Lập trình viên thậm chí có thể tạo nhánh riêng cho từng lỗi. Tạo nhánh dễ dàng, không tốn không gian và thời gian.

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ộ.

Bạn đang xem: Cách xóa một nhánh trong Git cục bộ và từ xa

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ả nhé!

Hướng dẫn giáo viên

Bản quyền bài viết thuộc thcs-thptlongphu. Mọi hành vi sao chép đều là gian lận!
Tác giả: https://thcs-thptlongphu.edu.vn – Trường Lê Hồng Phong
Nguồn: https://thcs-thptlongphu.edu.vn/cach-xoa-mot-nhanh-trong-git-cuc-bo-va-tu-xa/

Đăng bởi: Thcs-thptlongphu.edu.vn

Chuyên mục: Tổng hợp