Thứ hai, 18/03/2013 | 00:00 GMT+7

Cách sử dụng các nhánh Git


Bài viết này là phần thứ ba trong loạt bài "Sử dụng Git". Nó giả định bạn đã đọc cả bài viết cài đặt và bài viết về cách sử dụng git hiệu quả .

Trong thế giới của các hệ thống điều khiển version , GIT được cho là một trong những hệ thống tốt nhất về tính linh hoạt. Rất dễ dàng để học cú pháp và tìm ra cách git có thể phục vụ tốt nhất cho quy trình làm việc và môi trường của bạn.

Hướng dẫn này sẽ dạy bạn cách tạo hai nhánh (làm chủ và phát triển) và cách hợp nhất mã từ giai đoạn phát triển đến production .

Về cốt lõi, một nhánh là một chuỗi thay đổi mã duy nhất với một tên duy nhất. Mỗi kho có thể có một hoặc nhiều nhánh.

Theo mặc định, nhánh đầu tiên được gọi là "master".

Xem chi nhánh

Trước khi tạo các nhánh mới, ta muốn xem tất cả các nhánh tồn tại. Ta có thể xem tất cả các chi nhánh hiện có bằng lệnh như sau:

git branch -a

Thêm "-a" vào cuối lệnh của ta cho GIT biết rằng ta muốn xem tất cả các nhánh tồn tại, bao gồm cả những nhánh mà ta không có trong không gian làm việc local của bạn .

Đầu ra sẽ giống như sau:

* master
  remotes/origin/master

Dấu hoa thị bên cạnh "master" ở dòng đầu tiên của kết quả cho biết rằng ta hiện đang ở trên nhánh đó. Dòng thứ hai chỉ đơn giản là trên nguồn root từ xa, được đặt tên của ta , có một nhánh duy nhất, còn gọi là chủ.

Bây giờ ta đã biết cách xem các nhánh, đã đến lúc tạo cái đầu tiên của ta .

Tạo chi nhánh

Như đã nêu ở phần đầu của bài viết này, ta muốn phát triển và cài đặt production cho môi trường mã hóa của bạn .

Ta sẽ coi nhánh "chính" mặc định là production của ta và do đó cần tạo một nhánh duy nhất để phát triển hoặc tiền production .

Để tạo một nhánh mới, có tên là development, hãy nhập như sau:

git checkout -b develop

Giả sử ta chưa có một nhánh có tên là "phát triển", kết quả kết quả sẽ như sau:

Switched to a new branch 'develop'

Trong trường hợp chi nhánh có tên đó đã tồn tại, GIT sẽ cho ta biết như vậy:

fatal: A branch named 'develop' already exists.

Bạn có thể chuyển đổi qua lại giữa hai nhánh của bạn bằng cách sử dụng lệnh git checkout:

git checkout master

hoặc là

git checkout develop

Giả sử nhánh mà bạn đang cố gắng chuyển sang tồn tại, bạn sẽ thấy kết quả tương tự như sau:

Switched to branch 'master'

Nếu bạn cố gắng chuyển sang một chi nhánh không tồn tại, chẳng hạn như

git checkout nosuchbranch

Git sẽ cho bạn biết:

error: pathspec 'nosuchbranch' did not match any file(s) known to git.

Bây giờ ta có nhiều chi nhánh, ta cần phải sử dụng chúng cho tốt. Trong kịch bản của ta , ta sẽ sử dụng nhánh "phát triển" để thử nghiệm các thay đổi của ta và nhánh chính để phát hành chúng ra công chúng.

Để minh họa quá trình này, ta cần chuyển trở lại nhánh phát triển của bạn :

git checkout develop

Thay đổi chi nhánh đang phát triển của ta

Trên nhánh này, ta sẽ tạo một file trống mới, có tên là "phát triển". Cho đến khi ta hợp nhất nó vào nhánh chính (trong bước sau), nó sẽ không tồn tại ở đó.

touch develop 

Cũng giống như trong hướng dẫn trước, ta cần nói với git rằng ta muốn theo dõi file mới này.

Ta có thể thêm file "phát triển" bằng lệnh :

git add develop 

Tập hợp các lệnh trên sẽ tạo một file trống, có tên là "phát triển" và thêm nó vào GIT.

Ta cũng cần phải commit file này, file này sẽ đính kèm file này vào nhánh mà ta hiện đang sử dụng, đó là "phát triển".

git commit -m "develop file" develop 

Tệp này hiện đã tồn tại trên nhánh phát triển; như ta sắp tìm hiểu, nó không tồn tại trên nhánh chính.

Đầu tiên, ta sẽ xác nhận ta hiện đang ở trên nhánh phát triển. Ta có thể thực hiện việc này bằng lệnh như sau:

git branch 

Đầu ra sẽ xuất hiện tương tự như sau:

* develop
  master

Ta đã biết trước đó rằng dấu hoa thị bên cạnh tên chi nhánh cho biết rằng ta hiện đang ở trên chi nhánh đó.

Chạy lệnh "ls" sẽ cho ta thấy rằng có hai file tồn tại:

ls

Kết quả kết quả sẽ cho ta thấy rằng cả hai file của ta , có tên tương ứng là "tệp" và "phát triển", được tìm thấy:

develop file

Hợp nhất mã giữa các chi nhánh

Phần thú vị đến sau khi ta chuyển trở lại nhánh chính của bạn , mà ta có thể thực hiện với lệnh git checkout:

git checkout master

Để đảm bảo ta đang ở trên nhánh chính, ta có thể chạy gõ như sau:

git branch 

Đầu ra sẽ cho ta biết ta là một nhánh nào, được biểu thị bằng dấu hoa thị.

  develop 
* master

Chạy lại "ls", có vẻ như file mới của ta bị thiếu.

file

Nó không thiếu - nó nằm trên nhánh phát triển của ta và ta đang ở nhánh chính của ta .

Trong trường hợp của ta , file này đại diện cho bất kỳ thay đổi nào đối với các file nào (hoặc một file hoàn toàn mới) đã vượt qua tất cả thử nghiệm trên nhánh phát triển của ta và sẵn sàng đưa vào production . Quá trình di chuyển mã giữa các chi nhánh (thường từ phát triển đến production ) được gọi là hợp nhất .

Điều quan trọng cần nhớ khi hợp nhất, rằng ta muốn ở trên nhánh mà ta muốn hợp nhất.

Trong trường hợp này, ta muốn hợp nhất từ nhánh phát triển của ta , nơi file "phát triển" tồn tại, với nhánh chính của ta .

Hãy ghi nhớ rằng ta đã ở trên master branch, tất cả những gì ta phải làm là chạy lệnh merge.

Một trong những tùy chọn mà ta có thể chuyển cho lệnh hợp nhất, cụ thể là "--no-ff", nghĩa là ta muốn git giữ lại tất cả các thông báo commit trước khi hợp nhất. Điều này sẽ giúp việc theo dõi các thay đổi dễ dàng hơn trong tương lai.

Để hợp nhất các thay đổi từ nhánh phát triển thành nhánh chính, hãy nhập như sau:

git merge develop --no-ff

Đầu ra của lệnh sẽ tương tự như sau:

Merge made by the 'recursive' strategy.
 0 files changed
 create mode 100644 develop

Chạy lại lệnh ls sẽ xác nhận file "Develop" của ta hiện đã nằm trên nhánh chính của ta .

develop file

Điều cuối cùng bây giờ ta cần làm để thực hiện thay đổi này trên server từ xa của ta là đẩy các thay đổi của ta , điều này ta có thể thực hiện với sự trợ giúp của lệnh git push.

git push

Bạn sẽ thấy kết quả tương tự như sau, xác nhận việc hợp nhất của bạn từ nhánh phát triển với nhánh chính trên server từ xa của bạn:

Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 332 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To ssh://git@git.domain.tld/repository
   9af2dcb..53649cf  master -> master

Kết luận

Theo hướng dẫn ở trên, bạn sẽ có một cài đặt quy trình làm việc nhánh kép hoạt động và hy vọng hiểu biết về cách hoạt động của phân nhánh trong GIT. Hãy cho ta biết bạn nghĩ gì trong phần comment !

Bởi Jason Kurtz

Tags:

Các tin liên quan