Giới thiệu

Đối với các lập trình viên, việc sử dụng công cụ thống trị phiên phiên bản git là điều không thể thiểu trong quá trình hằng ngày cùng là trong số những kĩ năng cơ bạn dạng nhất mà người nào cũng cần tất cả được. Git có rất nhiều các khái niệm khác biệt nên nếu như bạn chỉ là người mới làm cho quen với git thì đó chính là nội dung bài viết dành mang đến bạn. Bài viết sẽ lý giải tại sao bọn họ nên sử dụng git tương tự như một số có mang thường gặp khi áp dụng git.

Bạn đang xem: Khác biệt giữa "git fetch" và "git pull"

Tại sao cần áp dụng git?

Thử tưởng tượng khi có tác dụng một project và bạn có nhu cầu bổ sung hoặc làm cho thêm tính năng lạ cho project của mình. Tuy nhiên để bảo đảm an toàn rằng chúng ta cũng có thể quay lại áp dụng phần code trước đó bạn đã code vào trường hợp tính năng lạ gây lỗi và chúng ta không nhớ cần xóa phần đa gì để khổi phục lại tinh thần code trước kia thì bạn phải thực hiện nay copy toàn thể project đó cùng paste ra ở đâu đó để lưu trữ rồi mới ban đầu thực hiện code tác dụng mới. Như vậy những lần muốn làm công dụng mới, các bạn phải lặp đi lặp lại thao tác trên và khôn xiết mất thời gian. Thực hiện Git hoàn toàn có thể giải quyết vụ việc này chỉ trong 1 vài cái lệnhNếu project bạn đang làm tất cả 2 thành viên thuộc làm, mỗi lần một người dứt một bản lĩnh lại bắt buộc gửi toàn cục source code đó thông qua usb, google driver hoặc công cụ tàng trữ online như thế nào đó cho thành viên còn lại hoàn toàn có thể download về cùng paste đè lại lên phần code của người đó. Các bước này cũng mất tương đối nhiều thời gian và tồn tại các rủi rõ lúc paste code ông xã lên nhau. Để xử lý vấn đề này, ta cũng rất có thể sử dụng git với một remote repository

Các định nghĩa cơ bạn dạng trong git

1. Repository là gì?Khi sử dụng git, lệnh trước tiên mà chúng ta thường gõ:

$ git initLệnh này sẽ tạo nên ra một folder ẩn mang tên .git cùng đây chính là repository (hay kho chứa). Còn phần code tuyệt hay thư mục của project nằm cùng rất thư mục .git được gọi là Working Directory. Git áp dụng repository này nhằm lưu trữ, giám sát toàn thể thông tin về các trạng thái của và bất cứ thay thay đổi nào cùng với project lúc này sẽ được git lưu trữ lại.2. Branch là gì?Như đã nói trên về sự việc khi ta ý muốn thêm một tính năng vượt trội mà bảo vệ vẫn rất có thể dễ dàng phục sinh lại tâm lý trước kia thì ta có thể sử tạo nên 1 branch new nhau sau:$ git branch hoặc

$ git checkout -b tên-branch> Branch mang định là masterBranch mới được tạo thành sẽ chứa toàn thể trạng thái với những biến hóa đã thực hiện trên project trước khi được tạoVới mỗi repository ta hoàn toàn có thể tạo các branch khác biệt và những nhánh này là độc lập với nhau nên những khi ta có đổi khác đối với project trên branch này vẫn không tác động đến những branch khácKhi kĩ năng được ta phân tích trên nhánh mới hoàn thành xong và vẫn được khám nghiệm đầy đủ, ta có thể tiến hành hợp duy nhất (đưa những biến đổi của nhánh này gộp vào với nhánh khác) 2 nhánh với nhau bằngCó hai loại branch là local branch - là branch nằm trên máy vi tính của họ và remote branch - là branch ở trên máy chủ từ xa3. Làm chũm nào để xóa một branch?Trong trường hợp branch bọn họ tạo ra trước đó không còn quan trọng nữa, ta có thể tiến hành xóa chúng đi bằng cách sử dụng những lệnh như sau:

Đối với local branch:

$ git branch -d Với giải pháp xóa trên, nếu branch buộc phải xóa chưa được gộp chuyển đổi với branch khác sẽ chớp nhoáng báo lỗi vào yêu cầu gộp cùng với branch không giống trước khi triển khai xóa bởi lệnh này

$ git branch -D Với biện pháp xóa này thì branch được hướng đẫn sẽ chớp nhoáng bị xóa bao gồm cả trong ngôi trường hợp nó vẫn chưa được gộp với branch khác

Đối cùng với remote branch:

$ git push --delete hoặc

$ git push --delete Lưu ý: đối với cả loca branch với remote branch ta có thể tiến hành xóa đồng thời những branch bằng phương pháp liệt kê tên các branch phải xóa liền thông liền nhau và phương pháp nhau một khoảng trắng

4. Push local branch lên remote vps với một thương hiệu khácThông hay khi bọn họ tiến hành push một local branch lên remote hệ thống thì thương hiệu branch khoác định của remote branch bây giờ sẽ là tên gọi của local branch, lệnh push như sau:

$ git push tên-remote> tên-branch>Nhưng nếu như ta muốn thay tên của remote branch kia trên vps thì ta cần sử dụng lệnh như sau:$ git push tên-remote> tên-branch>:tên-remote-branch>5. Biệt lập rebase cùng mergeKhi muốn thực hiện gộp 2 branch lại với nhau, ta hoàn toàn có thể sử dụng một trong những hai lệnh sau:$ git merge tên-branch>hoặc

$ git rebase tên-branch>Sẽ tiến hành gộp branch bây giờ với branch nhưng mà ta lựa chọn. Tuy bao gồm cùng tác dụng là gộp nhánh nhưng mà cách hoạt động vui chơi của merge cùng rebase lại không giống với nhau, ta hoàn toàn có thể so sánh sự khác hoàn toàn thông đó như sau:

Giả sử ta có 2 branch phải gộp với nhau như hình sau:
*
Đối với sử dụng merge kết quả thu được đang như sau:
*
Việc sử dụng merge sẽ khởi tạo ra một commit bắt đầu là kết hợp từ 2 commit ở đầu cuối của 2 nhánh cần gộp vào với nhauLog commit sẽ không bị đổi khác và máy tự các commit sẽ được sắp xếp theo thời gian tạo commitĐối với áp dụng rebase hiệu quả thu được đã như sau:
*
Rebase vẫn đưa toàn cục branch Feature lên ở trên "đầu" branch masterLàm đổi khác lịch sử commit6. Khác nhau giữa fetch với pullKhi muốn cập nhật các thay đổi từ bên trên remote hệ thống về local repository ta cũng có thể có hai cách để thực hiện điều này như sau:

$ git pull tên-remote> tên-remote-branch>Lệnh này sẽ triển khai kéo các chuyển đổi từ bên trên remote vps về local của bọn họ đồng thời triển khai merge các biến hóa đó ngay

$ git fetch tên-remote> tên-remote-branch>Đối cùng với lệnh fetch, các đổi khác từ remote server sẽ tiến hành kéo về máy tuy nhiên không tự động merge vào source code của chúng ta mà chúng ta có thể thực hiện câu hỏi này sau khoản thời gian đã đánh giá lại các đổi khác đó trước khi thực hiện merge. Các biến đổi này được đẩy sang 1 branch khác cùng ta hoàn toàn có thể sử dụng lệnh:

$ git branch -aĐể coi được những branch sau khoản thời gian fetch bên cạnh đó cũng hoàn toàn có thể checkout lịch sự branch đó để xem các thay đổi.

Có thể hiểu dễ dàng lại sự khác biệt giữa fetch với pull như sau:git pull = git fetch + git merge7. Nắm nào là git stash?Trong quy trình chúng làm việc, có những lúc bọn họ đang code dở một chức năng nào kia nhưng bất thần ở một chức năng trên branch khác đang xuất hiện lỗi cần được sửa gấp và bọn họ muốn lưu lại lại thay đổi đã có tác dụng trên nhánh hiện tại nhưng không muốn thực hiện commit dư vượt thì git stash là lệnh mà chúng ta có thể dùng để xử lý vấn đề này.git stash cho chính mình khả năng cất giữ trạng những biến đổi mà chúng ta đã tạo ra mà không cần thiết phải commit nó giúp chúng ta cũng có thể dễ dàng gửi sang nhánh khác làm việc và sau đó quay lại và thường xuyên những gì bạn đang làm sống nhánh đó.Các lệnh tương quan đến git stashĐể lưu lại được những biến hóa mà không buộc phải commit nó, ta cần thực hiện những lệnh sau:

$ git add .Để đưa toàn bộ các biến đổi đó vào trạng tháy staged, sau đó sử dụng lệnh sau nhằm lưu chuyển đổi đó nhưng không cần commit:$ git stash # hoặc "git stash save"Để xem lại các biến hóa đã lưu, ta hoàn toàn có thể dùng những lệnh sau:$ git stash list0: WIP on : 1: WIP on : 2: WIP on : Để xem lại danh sách các lần vẫn lưu, trong trường hợp ước ao xem nội dung thay đổi thì ta gõ lệnh sau:$ git stash menu -pHoặc nếu còn muốn xem rõ ràng nội dung chuyển đổi của một đợt lưu thay thể, ta sử dụng lệnh:$ git stash show "n"# cùng với n là lần lưu tương xứng trong danh sách# để ý phần n cần nằm vào cặp ngoặc đôiĐể đem lại biến đổi được lưu trong danh sách trên ta dùng lệnh:$ git stash apply "n"Hoặc lấy đổi khác gần nhất với xóa lần lưu đó$ git stash pop8. Có tác dụng thể như thế nào để xóa khỏi trạng thài vài ba commit gần đây?Để thưc hiện các bước này bạn cũng có thể sử dụng một trong các 2 lệnh sau:

$ git revert commit-hash-code>Lệnh này sẽ tạo ra một commit new đảo ngược lại những biến đổi trong commit được chỉ định.

$ git reset --hard commit-hash-code>Keehnh này đã xóa tổng thể các commit trước kia và chuyển branch bây giờ trở về tâm trạng của commit-hash-code đang chọn

9. Gộp một vài commit thành một commit duy nhất?Đôi khi trong khi làm việc, ta thường tạo thành ra một số commit dư quá và tiếp đến muốn gộp thông thường số commit này lại với một message cụ thể hơn về mục tiêu chung của toàn thể các commit đó. Để làm được điểu này, ta hoàn toàn có thể sử dụng rất nhiều lệnh sau:

$ git rebase -i commit-hash-code>Với commit-hash-code là hash code của commit cuối cùng của tập thể nhóm cần gộp hoặc:

$ git rebase -i HEAD~index>Với index là con số commit cần gồm so cùng với commit cuối cùng. Dường như khi thực hiện việc rebase nhằm gộp commit, ta có các lựa chọn khác như pick|squash|fixup để ra quyết định kiểu gộp. Sau cùng ta cũng có thể dùng lệnh sau nhằm gộp commit:

$ git reset --soft commit-hash-code>$ git địa chỉ cửa hàng .$ git commit -m"New commit"Với commit-hash-code là mã hash của commit trước này mà ta hy vọng gộp lại trường đoản cú commit cuối cùng đến commit chỉ định.

10. Rành mạch giữa git reset, reset --soft, reset --hard

$ git reset commit-hash-code>Sẽ dịch chuyển HEAD về phía commit được hướng đẫn nhưng vẫn giữ nguyên trạng thái thay đổi của những file với đồng thời sa thải các file đó khỏi trạng thái staged

$ git reset --soft commit-hash-code>Tương tứ như git reset nhưng toàn thể các fle vẫn duy trì được tinh thần staged.

Xem thêm: Cách Vẽ Tranh Đề Tài Phong Cảnh Quê Hương Lớp 9 Đơn Giản, Tranh Vẽ Phong Cảnh Quê Hương Lớp 9

$ git reset --hard commit-hard-code>Tương từ bỏ như 2 lệnh bên trên nhưng tổng thể sự biến đổi của các file sẽ bị loại bỏ hoàn toàn nên hãy để ý khi sử dụng lệnh này nhằm tránh rơi vào cảnh trường thích hợp bao nhiêu sức lực đổ xuống sông xuống biển cả

*

Thế làm sao là cherry-pick?Bạn hoàn toàn có thể hiểu cherry-pick cũng có một số điểm tương đương với merge và rebase là lấy đổi khác từ một branch này cùng gộp vào branch khác. Nhưng mà điểm khác nhau lớn tuyệt nhất giữa cherry-pick với merge, rebase là cherry-pick chỉ gộp một commit được chỉ định xuất phát từ 1 nhánh không giống vào nhánh hiện tại tại trong khi merge với rebase đang gộp cục bộ các commit lại. Để sử dụng cherry-pick, ta bắt buộc xem lại log những commit kế tiếp lấy mã hash của commit rất cần phải cherry-pick với checkout sang trọng nhánh rất cần được gộp commit của mã hash cơ và tiến hành lệnh:

$ git cherry-pick commit-hash-code>Một hình ảnh minh họa cho cherry-pick:

*
Giả sử ta ước ao lấy commit C từ bỏ branch master và gộp vào branch cherry-pickSau khi tiến hành lệnh cherry-pick như nói ở trên, đây đang là kết quả ta thu được
*
Như ta có thể thấy commit C trường đoản cú branch master được gộp vào với branch cherry--pick dưới tên commit là C"Git flow là gì?Git flow là 1 trong những quy trình làm việc với git được thiết kế bởi Vincent Driessen. Git flow giới thiệu một quy mô phân nhánh giúp hỗ trợ việc làm chủ các dự án lớn dễ dãi hơn. Sơ trang bị tổng quan:
*
Các branch vào gitflow:Master branch: là branch sử dụng cho thành phầm chính thức. Đây luôn luôn là branch bình ổn nhất và nó chưa lịch sử dân tộc các lần release của dự ánDevelop branch: là nhánh sử dụng cho sản phẩm trong quá trình phát triểnFeature: mỗi tính năng được cải thiện cho sẩn phẩm sẽ tiến hành tạo và cải cách và phát triển trên một branch mới với tên quy ước feature/tên_branch. Các feature này sẽ tạo nên ra từ develop branch với khi được hoàn thiện sẽ tiến hành gộp quay trở về với develop branch (Lưu ý: các Feature ko được phép gộp trực tiếp với master branch)Release: lúc develop branch đã có đủ số tính năng quan trọng để có thể release, ta có thể tạo branch bắt đầu với thương hiệu quy mong release/tên_version. Branch này sau khi được tạo xong sẽ thực hiện merge nó với bên cạnh đó cả master branch với develop branchHotfix branch: khi sản phẩm trên master branch của họ gặp bắt buộc trục trệu và yêu cầu có phiên bản vá ngay mau chóng thì ta sẽ tạo ra hotfix branch. Branch này giống như như release branch dẫu vậy nó được tạo thành từ master branch thay bởi vì từ develop branch như release (*Chú ý hotfix branch cũng rất cần được gộp lại với master branch với develop branch)Các lệnh vào gitflowĐể khởi sinh sản một git-flow cho một project, ta dùng lệnh sau$ git flow initLệnh này sẽ tạo ra nhị branch thuở đầu là master với developĐể bắt đầu một feature ta dùng lệnh$ git flow feature start sẽ tạo nên ra một branch mới mang tên dạng feature/Sau lúc feature đó được tiến hành xong, ta bao gồm thể chào làng feature kia lên remote server nhằm mọi người cùng có thể cập nhật bằng cách gõ lệnh:$ git flow feature publish Để triển khai gộp branch đó vào develop branch ta sử dụng lệnh:$ git flow feature finish Để tạo một phiên bản release ta sử dụng lệnh:$ git flow release start Để thực hiện merge phiên bản release kia vào master branch với develop branch ta sử dụng lệnh:$ git flow release finish Để tạo ra một bản hotfix ta cần sử dụng lệnh:$ git flow hotfix start Sau khi bản hotfix hoàn thiện ta có thể tiến hành merge lại cùng với master branchdevelop branch như sau:$git flow hotfix finish

Kết luận

Bài viết sống trên chủ yếu ra mắt cho mọi bạn về những khái niệm vào git cũng như cách thực hiện nó trong công việc thường ngày của bản thân mình một cách công dụng hơn. Cám ơn các bạn đã theo dõi.