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 Eballsviet.com 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ó.
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 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>:
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.
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:
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:
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ó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).
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 đó.
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:
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.
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ả Eballsviet.com nhé!