Là một lập trình viên chắc chắn bạn cần phải biết cách sử dụng những câu lệnh thao tác nhánh trong Git.
Đây là một trong các kỹ năng cơ bản và không thể thiếu, để giúp bạn làm việc hiệu quả trong các công ty phát triển phần mềm ở thời điểm hiện tại.
Trong bài viết này, chúng ta sẽ cùng nhau đi sâu tìm hiểu những câu lệnh Git quan trọng để làm việc với nhánh, như là:
- Tạo nhánh.
- Chuyển nhánh.
- Xoá nhánh.
Cho đến những kỹ thuật nâng cao như:
- Sáp nhập nhánh.
- Giải quyết xung đột.
Git là gì? Tại sao lập trình viên nào cũng cần PHẢI biết!
Tạo và chuyển nhánh
Trước tiên, chúng ta sẽ tìm hiểu câu lệnh tạo nhánh trong Git.
Để tạo nhánh mới, bạn có thể sử dụng câu lệnh git branch <tên_nhánh>
.
Ví dụ, để tạo nhánh chuc-nang-1, bạn gõ lệnh git branch chuc-nang-1
.
Tuy nhiên, câu lệnh này chỉ tạo nhánh mới chứ chưa tự động chuyển bạn sang nhánh đó. Để chuyển sang làm việc trên nhánh mới, bạn có hai lựa chọn:
- Lựa chọn thứ nhất: Sử dụng lệnh
git switch chuc-nang-1
. - Lựa chọn thứ hai: Sử dụng lệnh
git checkout chuc-nang-1
.
Cả hai lựa chọn này đều giúp bạn chuyển đổi giữa các nhánh dễ dàng.
Tuy nhiên, git switch
trực quan và tập trung vào việc chuyển nhánh. Trong khi git checkout
còn thực hiện thêm nhiều chức năng khác, có thể dễ gây nhầm lẫn cho người mới. Vì vậy, mình khuyến khích bạn sử dụng git switch
hơn.
Trong trường hợp, bạn muốn vừa tạo nhánh mới và chuyển sang nhánh đó ngay lập tức, bạn có thể sử dụng git switch -c chuc-nang-1
, hoặc git checkout -b chuc-nang-1
.
Như vậy, bạn đã biết cách tạo và chuyển đổi giữa các nhánh trong Git. Nhưng làm thế nào để biết được mình đang ở nhánh nào và có tổng cộng bao nhiêu nhánh trong dự án. Chúng ta hãy tiếp tục tìm hiểu ở phần tiếp theo.
Khóa Học Git Từ Cơ Bản Đến Nâng Cao
Xem danh sách nhánh
Để xem danh sách các nhánh hiện tại có trong dự án, bạn sử dụng lệnh git branch
.
Câu lệnh này sẽ liệt kê tất cả các nhánh trong dự án, và nhánh mà bạn đang làm việc sẽ được đánh dấu bằng dấu sao (*).
![Nhánh mà bạn đang làm việc sẽ được đánh dấu bằng dấu sao](https://letdiv.com/wp-content/uploads/2024/07/nhanh-dang-lam-viec.webp)
Sáp nhập nhánh (Merge)
Giả sử, bạn đã hoàn thành việc phát triển tính năng mới trên nhánh chuc-nang-1, và bạn muốn đưa những thay đổi đó vào nhánh master hoặc một nhánh khác. Quá trình này được gọi là sáp nhập nhánh (Merge).
Để sáp nhập nhánh vào nhánh master, trước tiên, bạn cần chuyển sang nhánh master bằng lệnh git switch master
.
Sau đó bạn thực hiện lệnh git merge chuc-nang-1
.
Lúc này, git sẽ tự động sáp nhập các sự thay đổi từ nhánh chuc-nang-1 vào nhánh master.
Giải quyết xung đột (Conflict)
Tuy nhiên, trong quá trình sáp nhập, đôi khi bạn sẽ gặp phải xung đột (Conflict). Xung đột xảy ra khi có sự thay đổi cùng 1 đoạn code ở cả hai nhánh mà bạn muốn sáp nhập.
Ví dụ, Trong lúc bạn đang phát triển chức năng “thanh toán” trên nhánh chuc-nang-1, một thành viên khác trong nhóm cũng đã sửa đổi đoạn code liên quan đến chức năng “thanh toán” trên nhánh master.
![Trường hợp xảy ra xung đột trong Git](https://letdiv.com/wp-content/uploads/2024/07/truong-hop-xay-ra-xung-dot-trong-git.webp)
Khi bạn cố gắng sáp nhập nhánh chuc-nang-1 vào nhánh master, Git sẽ thông báo bị xung đột và không thể tự sáp nhập được.
Auto-merging index.html CONFLICT (content): Merge conflict in index.html
Cách xử lý xung đột rất đơn giản: Bạn cần mở các file bị xung đột bằng trình soạn thảo code, ví dụ như VS Code. Git sẽ đánh dấu các đoạn xung đột bằng các ký hiệu đặc biệt:
<<<<<<< HEAD
: Đánh dấu bắt đầu đoạn code của nhánh hiện tại, chính là nhánh master.=======
: Đánh dấu phần ngăn cách giữa hai đoạn code xung đột.>>>>>>> chuc-nang-1
: Đánh dấu kết thúc đoạn code của nhánh chuc-nang-1.
![Các dấu hiệu xung đột trong GIT](https://letdiv.com/wp-content/uploads/2024/07/cac-dau-hieu-xung-dot-git.webp)
Đoạn code nằm giữa <<<<<<< HEAD
và =======
là đoạn code của nhánh hiện tại, trong trường hợp này là nhánh master.
Còn đoạn code nằm giữa =======
và >>>>>>> chuc-nang-1
là đoạn code của nhánh mà bạn muốn sáp nhập vào nhánh master, chính là nhánh chuc-nang-1.
Nhiệm vụ của bạn là quyết định xem nên giữ lại đoạn code nào, hoặc kết hợp chúng như thế nào đó để giải quyết xung đột.
Ở đây, mình sẽ giữ lại đoạn code của nhánh chuc-nang-1.
![Giữ lại đoạn code của nhánh chức năng 1](https://letdiv.com/wp-content/uploads/2024/07/giu-lai-code-cua-nhanh-chuc-nang-1.webp)
Sau khi chỉnh sửa xong, bạn nhớ xoá các ký hiệu đánh dấu của Git, lưu file và thực hiện commit các file bị xung đột như thông thường.
git add <tên_file> git commit -m "Giải quyết xung đột chức năng thanh toán"
Lưu ý, nếu không chắc chắn cần phải xử lý xung đột như thế nào, bạn nên tham khảo ý kiến của đồng nghiệp hoặc người có kinh nghiệm hơn.
Xoá nhánh
Sau khi merge thành công, nhánh chuc-nang-1 vẫn tồn tại. Bạn có thể tiếp tục sử dụng hoặc xoá nó đi nếu không thấy cần thiết nữa.
Để xoá nhánh chuc-nang-1 bạn sử dụng lệnh git branch -d chuc-nang-1
.
Tuy nhiên, khi xoá nhánh, bạn cần lưu ý 2 điều sau:
- Thứ nhất: Nếu nhánh chuc-nang-1 chưa được sáp nhập vào nhánh khác, Git sẽ không cho phép bạn xoá nó để tránh mất dữ liệu. Trong trường hợp này, bạn có thể sử dụng lệnh
git branch -D chuc-nang-1
để buộc phải xoá nhánh, nhưng hãy cẩn thận vì bạn sẽ mất tất cả thay đổi trên nhánh chuc-nang-1. - Thứ hai: Bạn không thể xoá nhánh mà bạn đang làm việc. Vì vậy, nếu muốn xoá nhánh chuc-nang-1, hãy đảm bảo bạn đã chuyển sang một nhánh khác, ví dụ như nhánh master.
Kết luận
Như vậy, chúng ta đã cùng nhau tìm hiểu các câu lệnh Git quan trọng để làm việc với nhánh. Hy vọng video này sẽ giúp bạn tự tin hơn trong việc sử dụng Git branch để quản lý dự án của mình.
Nếu bạn muốn làm chủ toàn bộ các câu lệnh Git từ cơ bản đến nâng cao, thì hãy đăng ký ngay khoá học Git chuyên sâu của LetDiv tại đường dẫn bên dưới: