git-flow là gì?
+ ++ git-flow là một tập các thao tác mở rộng của git nhằm cung cấp các thao tác repository (kho mã nguồn) ở mức cao dựa trên mô hình phân nhánh của Vincent Driessen. + xem chi tết ở đây +
+★ ★ ★
+ +Bản tóm tắt nãy sẽ cho bạn biết cách sử dụng cơ bản và hiệu quả của git-flow.
+ +★ ★ ★
+Một vài lời khuyên
+-
+
- Git flow cung cấp giao diện trợ giúp và đầu ra rất tuyệt vời. Hãy đọc chúng cẩn thận để xem điều kì diệu gì sẽ xảy ra ;) +
- Git Client - Sourcetree là một Git Client có giao diện GUI rất tiện lợi và cũng hỗ trợ luôn git-flow trên giao diện. +
- Git-flow là một giải pháp dựa trên merge. Nó không rebase các nhánh tính năng. +
★ ★ ★
+Cài đặt
+-
+
- Bạn cần cài đặt git trước khi có thể cài git-flow. +
- Git flow có thể hoạt động trên OSX, Linux và Windows. +
★ ★ ★
+OSX
+ Homebrew ++ $ brew install git-flow ++ Macports +
+ $ port install git-flow ++
Linux
++ $ apt-get install git-flow ++
Windows (Cygwin)
++ $ wget -q -O - --no-check-certificate + https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash ++
Bạn cần wget và util-linux để cài đặt git-flow.
++ Xem chi tiết về cách cài đặt git flow ở trang sau: git flow + wiki. +
+
Bắt đầu nào
+Git flow cần phải khởi tạo để có thể tùy chỉnh các cài đặt của dự án của bạn.
+★ ★ ★
+Khởi tạo
+ +Sau khi di chuyển tới thư mục dự án, chạy lệnh sau để khởi tạo git-flow.
++ git flow init ++
+ Bạn sẽ cần trả lời một số câu hỏi cho việc thiết lập git-flow sau câu lệnh khởi tạo. + Chúng tôi khuyên bạn nên sử dụng các giá trị [mặc định]. +
+ +Các tính năng
+ +-
+
- Phát triển các tính năng cho việc release sắp tới. +
- Về cơ bản chỉ tổ chức ở repos của các lập trình viên. +
★ ★ ★
+ +Bắt đầu một tính năng
+Phát triển tính năng mới bắt đầu từ nhánh phát triển'develop'. Ví dụ với tính năng MYFEATURE:
++ git flow feature start MYFEATURE ++
Lệnh này sẽ tạo ra một nhánh mới dựa trên nhánh 'develop' và chuyển sang nhánh mới này.
+ + +Kết thúc một tính năng
+ ++ Sau khi phát triển xong một tính năng, lệnh kết thúc tính năng sẽ thực hiện các thao tác: +
+-
+
- Merge nhánh tính năng - MYFEATURE vào nhánh 'develop' +
- Xoá nhánh tính năng +
- Chuyển sang nhánh 'develop' +
+ git flow feature finish MYFEATURE ++
Công bố tính năng
+ ++ Khi bạn làm việc với những người khác trên cùng một tính năng, + bạn sẽ cần công bố phần mã nguồn của bạn cho tính năng đó lên remote + để những người khác có thể cập nhập được. +
+ ++ git flow feature publish MYFEATURE ++
Lấy về tính năng
+ ++ Pull mã nguồn của tính năng được cập nhập bởi những thành viên khác. +
+ ++ git flow feature pull REMOTE_NAME MYFEATURE ++
Tạo một bản release
+ +-
+
- Hỗ trợ chuẩn bị cho bản release. +
- Cho phép sửa các lỗi nhỏ và chuẩn bị meta-data cho release. +
★ ★ ★
+Bắt đầu release
+ +Để bắt đầu release, sử dụng lệnh release của git flow.
+ Lệnh này sẽ tạo ra nhánh 'release' từ nhánh 'develop'. + ++ git flow release start RELEASE [BASE] ++
Tùy chọn [BASE]
cho phép commit được một giá trị hash sha-1. Trường hợp không chỉ định tùy chọn này thì HEAD sẽ được sử dụng.
★ ★ ★
+Để công bố phần code 'release' của mình cho các thành viên khác, ta có thể làm tương tự như với công bố tính năng bằng lệnh sau:
++ git flow release publish RELEASE ++
(Bạn có thể theo dấu remote 'release' bằng lệnh git flow release track RELEASE
)
Kết thúc release
+ +Kết thúc release là một bước lớn trong chiến lược phân nhánh git. Nó thực hiện các việc sau:
+-
+
- Merge nhánh 'release' vào nhánh 'master' +
- Gắn tag ở nhánh 'master' dành cho bản release +
- Merge lại nhánh 'release' vào nhánh 'develop' +
- Xóa bỏ nhánh 'release' +
+ git flow release finish RELEASE ++
Sửa đổi nóng - hotfix
+ +-
+
- Sử dụng cho các trường hợp khẩn cấp cần phải sửa đổi ngay trên bản sản phẩm (nhánh master). +
- Có thể tạo nhánh giải quyết khẩn cấp từ tag của nhánh 'master'. +
★ ★ ★
+Bắt đầu hotfix
+ +Giống như các lệnh khác của git flow, hotfix bắt đầu với:
++ git flow hotfix start VERSION [BASENAME] ++
Tham số VERSION ở đây chỉ định tên của phiên bản release hotfix này. Còn tham số tùy chọn basename sẽ chỉ định tên nhánh cơ bản thay cho hotfix thay vì nhánh 'master'
+ +Kết thúc hotfix
+ +Kết thúc hotfix sẽ merge lại nội dung thay đổi vào nhánh 'develop' và 'master'. Ở nhánh 'master' sẽ được gắn tag là phiên bản của hotfix.
++ git flow hotfix finish VERSION ++
Các lệnh
+
Lưu ý
+★ ★ ★
+-
+
- Ở đây không giới thiệu được tất cả các lệnh mà chỉ đưa ra một số lệnh quan trọng nhất của git-flow. +
- Tất nhiên là bạn vẫn có thể sử dụng toàn bộ các lệnh thông thường của git. git-flow chỉ đơn giản là một tập hợp các lệnh mở rộng cho git. +
- Chức năng nhánh 'support' vẫn đang là bản beta nên không được đề cập ở đây. +
- Tôi rất sẵn sòng tích hợp bất kì bản dịch nào nếu bạn sẵn lòng :) +
★ ★ ★
+