Khác Biệt Giữa ” Git Fetch Là Gì ? Mô Hình Hoạt Động Của Lệnh Git Pull Blog – Thánh chiến 3D

Giới thiệu

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

Đang xem : Git fetch là gì

Tại sao cần sử dụng git?

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

Các khái niệm cơ bản trong git

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

USD git initLệnh này sẽ tạo ra một thư mục ẩn có tên. git và đây chính là repository ( hay kho chứa ). Còn phần code hay hay thư mục của project nằm cùng với thư mục. git được gọi là Working Directory. Git sử dụng repository này để tàng trữ, giám sát hàng loạt thông tin về những trạng thái của và bất kể biến hóa nào với project lúc này sẽ được git tàng trữ lại. 2. Branch là gì ? Như đã nói ở trên về yếu tố khi ta muốn thêm một tính năng mới mà bảo vệ vẫn hoàn toàn có thể thuận tiện Phục hồi lại trạng thái trước đó thì ta hoàn toàn có thể sử tạo 1 branch mới nhau sau : USD git branch hoặc
USD git checkout – b tên-branch > Branch mặc định là masterBranch mới được tạo ra sẽ chứa hàng loạt trạng thái và những biến hóa đã thực thi trên project trước khi được tạoVới mỗi repository ta hoàn toàn có thể tạo nhiều branch khác nhau và những nhánh này là độc lập với nhau nên khi ta có đổi khác so với project trên branch này sẽ không tác động ảnh hưởng đến những branch khácKhi tính năng được ta thử nghiệm trên nhánh mới triển khai xong và đã được kiểm tra khá đầy đủ, ta hoàn toàn có thể triển khai hợp nhất ( đưa những đổi khác 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 tính của tất cả chúng ta và remote branch – là branch nằm trên máy chủ từ xa3. Làm thế nào để xóa một branch ? Trong trường hợp branch tất cả chúng ta tạo ra trước đó không còn thiết yếu nữa, ta hoàn toàn có thể thực thi xóa chúng đi bằng cách sử dụng những lệnh như sau :
Đối với local branch :
USD git branch – d Với cách xóa trên, nếu branch cần xóa chưa được gộp đổi khác với branch khác sẽ lập tức báo lỗi vào nhu yếu gộp với branch khác trước khi thực thi xóa bằng lệnh này
USD git branch – D Với cách xóa này thì branch được chỉ định sẽ lập tức bị xóa kể cả trong trường hợp nó chưa được gộp với branch khác
Đối với remote branch :
USD git push – delete hoặc
USD git push – delete Lưu ý : so với cả loca branch và remote branch ta hoàn toàn có thể triển khai xóa đồng thời nhiều branch bằng cách liệt kê tên những branch cần xóa liền tiếp nối đuôi nhau nhau và cách nhau một khoảng chừng trắng
4. Push local branch lên remote server với một tên khácThông thường khi tất cả chúng ta thực thi push một local branch lên remote server thì tên branch mặc định của remote branch lúc này sẽ là tên của local branch, lệnh push như sau :
USD git push tên-remote > tên-branch > Nhưng nếu ta muốn đổi tên của remote branch đó trên server thì ta cần sử dụng lệnh như sau : USD git push tên-remote > tên-branch > : tên-remote-branch > 5. Phân biệt rebase và mergeKhi muốn triển khai gộp 2 branch lại với nhau, ta hoàn toàn có thể sử dụng một trong hai lệnh sau : USD git merge tên-branch > hoặc
USD git rebase tên-branch > Sẽ thực thi gộp branch hiện tại với branch mà ta lựa chọn. Tuy có cùng tính năng là gộp nhánh nhưng cách hoạt động giải trí của merge và rebase lại khác với nhau, ta hoàn toàn có thể so sánh sự độc lạ thông đó như sau :
Giả sử ta có 2 branch cần gộp với nhau như hình sau :
*
Đối với sử dụng merge hiệu quả thu được sẽ như sau :
*
Việc sử dụng merge sẽ tạo ra một commit mới là phối 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à thứ tự những commit sẽ được sắp xếp theo thời hạn tạo commitĐối với sử dụng rebase hiệu quả thu được sẽ như sau :
*
Rebase sẽ đưa hàng loạt branch Feature lên trên “ đầu ” branch masterLàm biến hóa lịch sử vẻ vang commit6. Khác nhau giữa fetch và pullKhi muốn update những đổi khác từ trên remote server về local repository ta cũng có hai cách để triển khai điều này như sau :
USD git pull tên-remote > tên-remote-branch > Lệnh này sẽ triển khai kéo những biến hóa từ trên remote server về local của tất cả chúng ta đồng thời thực thi merge những biến hóa đó ngay

$ git fetch tên-remote> tên-remote-branch>Đối với lệnh fetch, các thay đổi từ remote server sẽ được kéo về máy nhưng không tự động merge vào source code của chúng ta mà chúng ta có thể thực hiện việc này sau khi đã review lại các thay đổi đó trước khi tiến hành merge. Các thay đổi này được đẩy sang một branch khác và ta có thể sử dụng lệnh:

USD git branch – aĐể xem được những branch sau khi fetch đồng thời cũng hoàn toàn có thể checkout sang branch đó để xem những đổi khác .

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

$ git add .Để đưa toàn bộ các thay đổi đó vào trạng tháy staged, sau đó sử dụng lệnh sau để lưu thay đổi đó mà không cần commit:$ git stash # hoặc “git stash save”Để xem lại các thay đổi đã lưu, ta có thể dùng các lệnh sau:$ git stash list{0}: WIP on : {1}: WIP on : {2}: WIP on : Để xem lại danh sách các lần đã lưu, trong trường hợp muốn xem nội dung thay đổi thì ta gõ lệnh sau:$ git stash list -pHoặc nếu muốn xem cụ thể nội dung thay đổi của một lần lưu cụ thể, ta dùng lệnh:$ git stash show “{n}”# với n là lần lưu tương ứng trong danh sách# Lưu ý phần {n} phải nằm trong cặp ngoặc đôiĐể lấy lại thay đổi được lưu trong danh sách trên ta dùng lệnh:$ git stash apply “{n}”Hoặc lấy thay đổi gần nhất và xóa lần lưu đó$ git stash pop8. Làm thể nào để xóa bỏ trạng thài vài commit gần đây?Để thưc hiện công việc này chúng ta có thể sử dụng 1 trong 2 lệnh sau:

USD git revert commit-hash-code > Lệnh này sẽ tạo ra một commit mới đảo ngược lại những đổi khác trong commit được chỉ định .
Xem thêm : ( Tiếng Việt ) Tiểu Ngạch Tiếng Anh Là Gì ? Xuất Khẩu Tiểu Ngạch Tiếng Anh Là Gì
USD git reset – hard commit-hash-code > Keehnh này sẽ xóa hàng loạt những commit trước đó và đưa branch hiện tại trở về trạng thái của commit-hash-code đã chọn
9. Gộp một vài commit thành một commit duy nhất ? Đôi khi trong lúc thao tác, ta thường tạo ra 1 số ít commit dư thừa và sau đó muốn gộp chung số commit đó lại với một message rõ ràng hơn về mục tiêu chung của hàng loạt những commit đó. Để làm được điểu này, ta hoàn toàn có thể sử dụng những lệnh sau :
USD git rebase – i commit-hash-code > Với commit-hash-code là hash code của commit sau cuối của nhóm cần gộp hoặc :
USD git rebase – i HEAD ~ index > Với index là số lượng commit cần gồm so với commit ở đầu cuối. Ngoài ra khi triển khai việc rebase để gộp commit, ta có những lựa chọn khác như pick | squash | fixup để quyết định hành động kiểu gộp. Cuối cùng ta cũng hoàn toàn có thể dùng lệnh sau để gộp commit :
USD git reset – soft commit-hash-code > $ git add. $ git commit – m ” New commit ” Với commit-hash-code là mã hash của commit trước đó mà ta muốn gộp lại từ commit sau cuối đến commit chỉ định .
10. Phân biệt giữa git reset, reset – soft, reset – hard
USD git reset commit-hash-code > Sẽ vận động và di chuyển HEAD về phía commit được chỉ định nhưng vẫn giữ nguyên trạng thái biến hóa của những file và đồng thời vô hiệu những file đó khỏi trạng thái staged
USD git reset – soft commit-hash-code > Tương tư như git reset nhưng hàng loạt những fle vẫn giữ được trạng thái staged .
Xem thêm : Buông Bỏ Chấp Niệm Là Gì ? Buông Bỏ Chấp Niệm Có Khó Không ? Phongthuycanbiet
USD git reset – hard commit-hard-code > Tương tự như 2 lệnh trên nhưng hàng loạt sự biến hóa của những file sẽ bị vô hiệu trọn vẹn nên hãy quan tâm khi dùng lệnh này để tránh rơi vào trường hợp bao nhiêu sức lực lao động đổ xuống sông xuống biển
*

Giả sử ta muốn lấy commit C từ branch master và gộp vào branch cherry-pickSau khi thực hiện lệnh cherry-pick như đề cập ở trên, đây sẽ là kết quả ta thu được

*
Như ta hoàn toàn có thể thấy commit C từ 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à một quy trình tiến độ thao tác với git được phong cách thiết kế bởi Vincent Driessen. Git flow đưa ra một quy mô phân nhánh giúp tương hỗ việc quản trị những dự án Bất Động Sản lớn thuận tiện hơn. Sơ đồ tổng quan :
*

Các branch trong gitflow:Master branch: là branch dùng cho sản phẩm chính thức. Đây luôn là branch ổn định nhất và nó chưa lịch sử các lần release của dự ánDevelop branch: là nhánh dùng cho sản phẩm trong quá trình phát triểnFeature: mỗi tính năng mới cho sẩn phẩm sẽ được tạo 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 ra từ develop branch và khi được hoàn thiện sẽ được gộp trở lại với develop branch (Lưu ý: các Feature không được phép gộp trực tiếp với master branch)Release: khi develop branch đã có đủ số tính năng cần thiết để có thể release, ta có thể tạo branch mới với tên quy ước release/tên_version. Branch này sau khi được tạo xong sẽ tiến hành merge nó với đồng thời cả master branchdevelop branchHotfix branch: khi sản phẩm trên master branch của chúng ta gặp phải trục trặc và cần có bản vá ngay lập tức thì ta sẽ tạo ra hotfix branch. Branch này tương tự như release branch nhưng nó được tạo ra từ master branch thay vì từ develop branch như release (*Chú ý hotfix branch cũng cần được gộp lại với master branch với develop branch)Các lệnh trong gitflowĐể khởi tạo một git-flow cho một project, ta dùng lệnh sau$ git flow initLệnh này sẽ tạo ra hai branch ban đầu là master và developĐể bắt đầu một feature ta dùng lệnh$ git flow feature start Sẽ tạo ra một branch mới có tên dạng feature/Sau khi feature đó được thực hiện xong, ta có thể công bố feature đó lên remote server để mọi người cùng có thể cập nhật bằng cách gõ lệnh:$ git flow feature publish Để tiến hành gộp branch đó vào develop branch ta dùng lệnh:$ git flow feature finish Để tạo một bản release ta dùng lệnh:$ git flow release start Để tiến hành merge bản release đó vào master branchdevelop branch ta dùng lệnh:$ git flow release finish Để tạo một bản hotfix ta 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 với master branchdevelop branch như sau:$git flow hotfix finish

Kết luận

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

Source: https://blogthuvi.com
Category: Blog