Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Git Branch (Nhánh): Hướng dẫn Toàn tập

Nhánh (Branching) là tính năng trong hầu hết tất cả hệ thống kiểm soát phiên bản hiện đại. Các nhánh cho phép lập trình viên rời khỏi phiên bản chính của mã của họ và làm thay đổi cho mã của họ mà không cập nhật phiên bản chính của mã.

Trong các hệ thống kiểm soát phiên bản khác, việc tạo nhánh có thể là quá trình khó khăn. Một số hệ thống yêu cầu bạn tạo bản sao mới của mã, điều này có thể tốn công sức cho dự án lớn. Git, mặt khác, có tính năng nhánh đơn giản cho phép bạn dễ dàng điều hướng giữa các nhánh khác nhau.

Hướng dẫn này sẽ thảo luận, với ví dụ, những kiến thức cơ bản về nhánh trong Git và cách bạn có thể dùng lệnh git branch. Sau khi đọc hướng dẫn này, bạn sẽ thành thạo việc tạo nhánh trong Git.

Git Branches (Các nhánh Git)

Các nhánh là một phần thiết yếu của việc làm việc với Git.

Trong dự án chuyên nghiệp, các nhánh thường được dùng cho mọi tính năng hoặc sửa lỗi đang được thực hiện. Điều này là vì nhánh cho phép một lập trình viên làm việc trên kho lưu trữ mà không ảnh hưởng đến mã chính (main codebase), vì vậy lập trình viên có thể làm việc trên một tính năng hoặc sửa lỗi với người khác trước khi nó được đẩy lên bản sao chính của mã dự án.

Cách tiếp cận phát triển phần mềm này giảm thiểu cơ hội mã chứa lỗi được hợp nhất vào phiên bản chính của codebase.

Trong Git, một nhánh là một dòng mới bên trong kho lưu trữ. Dòng mới này sẽ bao gồm phiên bản riêng của mã codebase và sẽ phát triển độc lập từ nhánh chính. Trong hầu hết codebase, nhánh này được gọi là "master branch" (nhánh master).

Vì các nhánh độc lập từ nhánh master, chúng có thể được dùng để làm việc trên các tính năng khác nhau trong codebase song song. Sau đó, khi một thay đổi sẵn sàng trở thành phần của codebase chính, thay đổi đó có thể được hợp nhất vào nhánh master hoặc phiên bản chính của mã.

Các Lệnh Git Branch

Nhánh do người dùng tạo độc lập với nhánh master. Các nhánh này có lịch sử commit riêng, và khi bạn đẩy thay đổi lên nhánh, những thay đổi đó sẽ chỉ xuất hiện trên nhánh chúng được đẩy tới.

Hãy nghĩ về nhánh như cách tạo nhiều phiên bản của cùng một codebase. Bạn có thể có nhánh bao gồm mã cho tính năng mới bạn đang làm, và nhánh khác lưu phiên bản cập nhật của repo giải quyết một vấn đề mở.

Lệnh git branch được dùng để làm việc với nhánh trong Git. Lệnh này cho phép bạn tạo, đổi tên và xóa nhánh. Bạn cũng có thể lấy danh sách nhánh bằng git branch.

Ngoài ra, git branch thường được dùng cùng với lệnh git checkout và git merge, dùng để chuyển đổi giữa các phiên bản codebase và hợp nhất các phiên bản khác nhau của codebase, tương ứng. Chúng ta thảo luận các chủ đề này trong hướng dẫn riêng.

Bây giờ chúng ta biết cơ bản về nhánh trong Git, hãy khám phá cách dùng lệnh git branch với các cờ (flags) và tham số được hỗ trợ.

Lấy Danh sách Nhánh

Để lấy danh sách nhánh trong kho lưu trữ Git, bạn có thể dùng lệnh git branch. Đây là cú pháp cho lệnh git branch:

git branch

Đây là ví dụ đầu ra từ lệnh này:

* master
* v0.9
* v0.8

Như bạn thấy, lệnh git branch trả về danh sách các nhánh trong kho Git của chúng ta. Cách khác để viết lệnh này là dùng git branch --list, cũng trả về danh sách nhánh trong kho Git.

Tạo Nhánh

Giả sử chúng ta muốn tạo nhánh gọi là "v0.9.1" trong codebase của mình. Chúng ta có thể làm như sau:

git branch v0.9.1

Lệnh này tạo nhánh mới tên v0.9.1. Khi lệnh này chạy, môi trường phát triển của bạn sẽ vẫn gắn với HEAD của repo. Vì vậy, nếu bạn muốn thấy nhánh mới, bạn cần dùng lệnh git checkout.

Khi nhánh mới được tạo, kho lưu trữ không thay đổi theo cách nào khác ngoài việc nhánh mới tồn tại. Lịch sử kho lưu trữ sẽ giữ nguyên. Điều này là vì khi bạn tạo nhánh, Git chỉ tạo con trỏ đến nhánh mới.

Nếu bạn muốn bắt đầu commit mã vào nhánh của mình, bạn sẽ cần dùng lệnh git checkout, git add và git commit.

Xóa Nhánh

Để xóa nhánh trong kho lưu trữ Git, bạn có thể dùng cờ -d.

Giả sử chúng ta quyết định muốn xóa nhánh v0.9.1 từ mã của mình. Đây là lệnh chúng ta dùng để xóa nhánh:

git branch -d v0.9.1

Lệnh này xóa nhánh của chúng ta. Tuy nhiên, cờ -d thực hiện thao tác xóa an toàn (safe delete), nghĩa là nếu có thay đổi chưa hợp nhất (thay đổi trên nhánh chưa được hợp nhất vào nhánh khác), nhánh sẽ không bị xóa. Điều này đảm bảo bạn không vô tình mất quyền truy cập nhánh với mã bạn muốn hợp nhất.

Nếu bạn muốn buộc xóa nhánh, ngay cả khi nó có thay đổi chưa hợp nhất đang chờ, bạn có thể dùng cờ -D. Điều này sẽ vĩnh viễn xóa nhánh. Đây là cú pháp cho cờ -D:

git branch -D v0.9.1

Sau khi chạy lệnh này, nhánh của chúng ta đã bị xóa. Cờ -D chỉ nên dùng trong trường hợp bạn chắc chắn muốn xóa nhánh. Điều này là vì cờ -D không hiển thị cảnh báo khi được thực thi.

Một khi bạn đã thực thi lệnh git branch -d/-D, bản sao cục bộ của nhánh sẽ bị xóa. Tuy nhiên, nhánh có thể vẫn tồn tại trong bản sao chính của repo, nếu repo của bạn được lưu từ xa.

Nếu bạn muốn xóa bản sao từ xa của nhánh, bạn sẽ cần chạy lệnh khác. Giả sử chúng ta muốn nói cho kho lưu trữ từ xa rằng nhánh v0.9.1 nên bị xóa. Chúng ta có thể làm như sau:

git push origin :v0.9.1

Lệnh trên sẽ chỉ thị kho lưu trữ từ xa xóa nhánh v0.9.1.

Đổi tên Nhánh

Bạn có thể đổi tên nhánh Git bằng cờ -m.

Cờ -m đổi tên nhánh bạn đang xem. Giả sử chúng ta muốn đổi tên nhánh v0.9.2 (đang xem) thành v1. Chúng ta có thể làm như sau:

git branch -m v1

Lệnh này đổi tên nhánh chúng ta đang xem thành v1.

Kết luận

Lệnh git branch được dùng để tạo, đổi tên và xóa nhánh. Lệnh này cũng có thể dùng để lấy danh sách các nhánh liên quan đến git repo.

Tuy nhiên, nếu bạn muốn commit mã vào nhánh, bạn sẽ cần dùng các lệnh như git checkout, git add và git commit, dùng để lưu thay đổi vào codebase.

Hướng dẫn này thảo luận, với ví dụ, những kiến thức cơ bản về nhánh trong Git và cách dùng lệnh git branch. Bây giờ bạn đã được trang bị kiến thức cần thiết để bắt đầu tạo nhánh mã trong Git như một nhà phát triển chuyên nghiệp!