Git là gì? Sử dụng Git nâng cao chuẩn Git-flow

Git Flow là gì?

Git Flow là tên gọi của 1 tool (command) hỗ trợ branch model gọi là A successful Git branching model do Vincent Driessen đề xuất ra. Người ta thường gọi đó là model hay tool, và trong git-flow có 5 kiểu với mỗi vai trò khác nhau (tùy trường hợp mà có lúc là 6 kiểu).

Switch những kiểu với nhau để tăng trưởng Bằng việc set trước những branch, những rule khi merge, dù có bao nhiêu developer cùng thời gian tăng trưởng vẫn hoàn toàn có thể quản trị branch thuận tiện, và tránh được những yếu tố do merge Tiếp theo. Chúng ta cùng xem về những kiểu của branch có trong git-flow .

Lợi ích khi dùng git-flow

Git Flow là gì?

Git Flow đưa ra các quy ước để triển khai công việc. Nó được tổng kết qua quá trình làm việc thực tiễn của nhiều team trên thế giới hiện nay và mang lại kết quả khả quan đáng kinh ngạc. Mục đích là các nhóm công việc triển khai song song nhưng không ảnh hưởng tới nhau. Các  môi trường development, staging và production tách biệt giúp quá trình kiểm thử (QA), trả lại feedback và xử lý các issue được gọn gàng và thống nhất hơn nhiều.

Ý tưởng của nó thực ra là duy trì những nhánh branch không đổi, tức không xóa ( có tính cố định và thắt chặt ) trong suốt dòng đời mẫu sản phẩm. Branch master sẽ luôn là branch chính vận dụng cho production, trong khi những branch hotfix, features hay develop phân phối những bản để ship hàng QA và hoàn thành xong trước khi được đẩy lên master .Khác với cách thường thì tạo ra nhiều yếu tố xảy ra ngay trên production, thứ mà tất cả chúng ta hay gọi là “ rút kinh nghiệm tay nghề từ những sai lầm đáng tiếc thực tiễn ”, Git Flow đẩy quy trình QA vào một phần bắt buộc cho cả developer và team QA và nhu yếu sự hoàn thành xong cao hơn về chất lượng đầu ra .

Trong môi trường thực tế tại LPTech thì chúng tôi sử dụng git để hạn chế những rủi ro cho các dự án thiết kế web và lập trình phần mềm quản lý bán hàng, phần mềm erp. Việc sử dụng GIT còn giúp cho vấn đề Release dự án lên server 1 cách thuận lợi và hoàn toàn tự động nhờ các công cụ CD tích hợp sẳn.

Tại sao lại chọn Git?

Đã có quá nhiều đại chiến nổ ra khi bàn về ưu điểm điểm yếu kém của Git so với những công cụ quản trị source code tập trung chuyên sâu khác ( như CVS, SVN ). Là một developer, tôi cảm thấy thương mến Git hơn. Git thực sự đã biến hóa cách tâm lý về merging và branching. Những ai đã từng thao tác với CVS / Subversion đều hiểu merging / branching không hề đơn thuần, trong tài liệu về CVS / Subversion branching và merging chỉ được nhắc đến ở chapter cuối, dành cho những users có kinh nghiệm tay nghề. Còn với Git, branching / merging là một phần trong workflow hàng ngày của bạn, được miêu tả ở những phần tiên phong trong Git book .Tham khảo thêm : Những quyền lợi của việc dùng Git

Các nhánh (Branch) trong git-flow

Git-Flow gồm có 2 nhánh chính là Master và Develop, 3 nhánh Phụ gồm: Feature, Release,HotFix. Tương ứng với mỗi loại Nhánh sẽ có chức năng khác nhau. Hiện tại có rất nhiều Công cụ quản trị Git hỗ trợ Git-flow tốt nhất đó là Source-Tree  miễn phí nữa, còn có phí cao cấp hơn tí là GitKraken.

Nhánh Master branch

Branch master là branch được tạo mới repository và tạo mặc định trong Git. Những người mới mở màn thường có xu thế commit trực tiếp và branch master, nhưng trong git-flow thì ta không commit trực tiếp vào master, mà đây chỉ là branch dùng để triển khai merge, nên tất cả chúng ta chú ý quan tâm nhé .

Git Flow là gì?

Nhánh origin / master được coi là nhánh chính với HEAD phản ánh trạng thái production-ready .

Nhánh Develop branch

Branch develop là branch TT cho việc tăng trưởng. Do với mỗi biến hóa ta lại ngắt branch feature tương ứng do đó hoàn toàn có thể nói đây là branch được dùng nhiều nhất trong quy trình tăng trưởng. Cần đặt tên branch sao cho người khác hoàn toàn có thể biết được ngay nội dung biến hóa là gì. Mỗi branch được ngắt ra để làm n ày sau khi làm xong ta lại merge vào develop, merge xong sẽ xóa nó đi .Nhánh origin / develop được coi là nhánh chính với HEAD phản ánh trạng thái thay đổi mới nhất trong quy trình tăng trưởng, sẵn sàng chuẩn bị cho release tiếp theo .

Nhánh Release branch

  1. Tách từ: develop
  2. Merge vào: develop và master
  3. Naming convention: release-*

Branch release là branch dùng để release mẫu sản phẩm như đúng tên gọi của nó. Khi release mẫu sản phẩm thì có rất nhiều những task tương quan khác thiết yếu nữa, những task tương quan đó sẽ được release trên branch release mà ta ngắt ra từ branch develop. Sau khi release xong, sẽ merge vào branch master và branch develop, ghi release tag vào merge commit của branch master sau đó xóa branch release đi .

Git Flow là gì?

Release branches được sử dụng để sẵn sàng chuẩn bị cho release bản production mới. Tất cả những việc làm sau cuối trước khi release sẽ được thực thi ở đây, ngoài những còn để fix nốt những bugs lẻ tẻ, chuẩn bị sẵn sàng meta-data ( version number, build dates, etc .. ). Nhờ việc tách nhánh ra khỏi develop, tất cả chúng ta hoàn toàn có thể liên tục tăng trưởng những features cho đợt release khác một cách thông thường .Thời điểm được lựa chọn để tách nhánh từ develop là khi develop phản ánh được trạng thái mong ước cho việc release mới. Ít nhất lúc đó tổng thể những features dành cho đợt release phải được merge vào develop rồi. Những features nhắm đến những lần release sau thì chưa được merge vào, phải đợi sau khi tách nhánh .Chúng ta sẽ triển khai đánh version theo rule của dự án Bất Động Sản ngay sau khi tạo release branch .

Nhánh Hotfix branch

  1. Tách từ: master
  2. Merge vào: develop và master
  3. Naming convention: hotfix-*

Khi release loại sản phẩm cũng có khi ta phát hiện ra bug rất nghiêm trọng, chắc rằng mọi người cũng từng trải qua yếu tố này rồi nhỉ ? Những lúc như vậy ta sẽ ngắt ra branch hotfix trực tiếp từ branch master để triển khai sửa, sau khi sửa xong sẽ merge vào master và develop và ghi lại release tag. Sau đó sẽ xóa branch hotfix đi .

Git Flow là gì?

Hotfix branches cũng giống release branches ở chỗ được sử dụng để sẵn sàng chuẩn bị cho việc release production mới, chỉ khác ở chỗ là ko có plan từ trước. Khi có một bug nghiêm trọng trên bản production cần được xử lý ngay lập tức, một hotfix branch sẽ được tách ra từ master và được đánh version để phân biệt .Ưu điểm của việc tách nhánh này ở chỗ những team members khác hoàn toàn có thể liên tục việc làm ở develop trong khi những người khác hoàn toàn có thể tập trung chuyên sâu vào fix bug của production .

Nhánh Feature branch

  1. Tách từ: develop
  2. Merge vào: develop
  3. Naming convention: tự do, ngoại trừ master, develop, release-*, hotfix-*

Feature branches ( hay còn gọi là topic branches ) được sử dụng để tăng trưởng những feature mới Giao hàng cho release sau này. Khi mở màn tăng trưởng một công dụng, hoàn toàn có thể chưa rõ được thời gian tính năng đó được tích hợp vào mạng lưới hệ thống và release. Feature branch sẽ sống sót trong quy trình tính năng được tăng trưởng, ở đầu cuối sẽ được merge lại vào develop ( khi quyết định hành động lần release tới gồm có công dụng đó ) hoặc bị bỏ đi ( khi thấy tính năng không còn thiết yếu ) .

Git Flow là gì?

Về cơ bản thì feature branches chỉ sống sót ở repos của developers, chứ ko phải ở origin .

Kết luận

Các bạn chắc hẳn đã nắm được bước thực hiện khi sử dụng git-flow rồi nhỉ. Nhất định hãy vận dụng thuần thục nó vào thực tế trong các dự án Thiết kế website hoặc lập trình phần mềm nhé. Tôi bổ sung thêm, trong số branch model của Git, ngoài ra còn rất nhiều các kiểu model khác như là GitHub Flow, GitLab Flow, với mỗi sắc thái ưu điểm nhược điểm riêng nên chúng ta cũng sẽ cùng tìm hiểu thêm về các model khác đó nữa nhé.

Tham khảo thêm: Những lệnh Git command hữu ích nhất bắt buộc phải biết

Điểm lợi lớn nhất của Git Flow là giúp việc theo dõi và xử lý các vấn đề nảy sinh do một tính năng, một bản fix rất dễ dàng. Quá trình review sẽ thuận tiện và quan sát được các lỗi nảy sinh trong quá trình deploy.

Tuy vậy, nếu bạn muốn tăng thời hạn tiến hành production thì sẽ gặp hạn chế đôi chút về mặt thời hạn. Ngoài ra, việc remove những commit không đạt nhu yếu chất lượng cũng khó khăn vất vả hơn ( ta không dùng cherry-pick để làm nữa ) .Ở công ty LPTech, chúng tôi sử dụng Git như một công cụ quản trị dự án Bất Động Sản không hề thiếu được, Các dự án Bất Động Sản phong cách thiết kế website của chúng tôi đều sử dụng git và tích hợp CI / CD vào dựa trên Git mà hoạt động giải trí rất hiệu suất cao .

Liên hệ tư vấn - LPTech