Hiện nay, có rất nhiều công cụ được các lập trình viên sử dụng trong quá trình lập trình. Một trong số đó là Git. Vậy Git là gì? Hãy cùng theo dõi bài viết sẻ dưới đây để tìm ra đáp án cho những câu hỏi này nhé!
1.1 Git là gì?
Trong lúc lập trình, việc vô tình xóa đi đoạn code vẫn đang sử dụng là vấn đề không thể tránh khỏi. Để có thể lấy lại chính xác đoạn mã code đó là một vấn đề khiến không ít lập trình viên mới vào nghề phải đau đầu. Tuy nhiên, với những lập trình viên sử dụng phần mềm quản lý phiên bản phân tán Git thì điều này sẽ lại rất dễ dàng.
Theo đó, Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS). Hệ thống này được ra đời vào năm 2005 và ngay sau đó đã được sử dụng rất phổ biến. Git cung cấp cho mỗi lập trình viên một kho lưu trữ (repository) gọi tắt là Repo đây là nơi chứa cơ sở dữ liệu (database), tất cả những thông tin cần thiết để duy trì và quản lý các sử đổi và lịch sử của dự án. Hơn nữa khi sử dụng phần mềm quản lý phiên bản phân tán bạn sẽ dễ dàng quay lại một phiên bản trước của tập tin đó để khôi phục lại phiên bản cũ.
Bên cạnh đó, trong hệ thống quản lý phiên bản phân tan Git các máy khách không chỉ "check out" phiên bản mới nhất của các tập tin mà là sao chép (mirror) toàn bộ kho mã nguồn (repository). Nhờ đó mà trong trường hợp máy chủ ngừng hoạt động, thì bạn hoàn toàn có thể lấy dữ liệu từ bất kỳ máy khách nào sau đó thực hiện sao chép ngược trở lại máy chủ để khôi phục lại toàn bộ hệ thống một cánh nhanh chóng.
1.2 Ưu điểm của Git
Nếu trước kia, mọi người thường sử dụng Subversion (SVN) do google hỗ trợ thì nhiều năm trở lại đây Git đang trở thành 1 xu thế mới, thay thế dần cho SVN bởi những tính năng vượt trội sau đây:
Lưu lại các phiên bản khác nhau của mã nguồn dự án phần mềm
Khôi phục lại mã nguồn từ một phiên bản bất kỳ một cách nhanh chóng
Dễ dàng so sánh giữa các phiên bản khác
Kiểm soát được quá trình sửa chữa để khôi phục lại tập tin bị mất
Dễ dàng thử nghiệm tính năng của dự án mà không sợ làm ảnh hưởng đến phiên bản chính Điều này, giúp nâng cao được chất lượng code cho dự án chính.
Thực hiện kiểm soát và phân chia các task hiệu quả nhờ đó mà bạn cũng có thể dễ dàng thực hiện nhiều task cùng một lúc.
Đặc biệt, Git được sử dụng hoàn toàn miễn phí mà không cần bất kì cơ sở hạ tầng server nào.
Hiện tại, Git đều đang được hỗ trợ sử dụng trên tất cả các hệ điều hành như: Windows, Linux hay và đều có tài liệu hướng dẫn cài đặt chi tiết cả.
Việc cài đặt Git cũng diễn ra rất đơn giản, người dùng chỉ cần thao tác Next còn lại tự đông nó chạy cho mình hết.
Quy trình xử lý công việc trên Git sẽ như sau:
Các thuật ngữ quan trọng trong Git
Trong hệ thống quản lý phiên bản phân tán Git có rất nhiều thuật ngữ. Hãy cùng chúng tôi tìm hiểu một số thuật ngữ cơ bản dưới đây:
1. Repository (Kho lưu trữ)
Kho lưu trữ Repository hay còn được gọi là repo một tập hợp các mã nguồn. Tại đây có chứ các commit của dự án hoặc một tập hợp các tham chiếu đến các commit để người dùng có thể lấy ra để sử dụng. Ngoài ra, các bạn cũng có thể tạo các file mới, thêm và commit nó để chia sẻ. Bây giờ, bạn có một kho lưu trữ để chia sẻ.
2. Commit
Git commit có tác dụng giúp Git lưu lại ảnh chụp màn hình/snapshot đối với các thay đổi có trong thư mục trong quá trình làm việc với Git. Với Git, khi Commit thì các thay đổi sẽ được tự động lưu lại và thường nằm trong mục Staging Area. Mỗicommit có hash SHA1 duy nhất được sử dụng để theo dõi các file đã thay đổi.
3. Branch
Branch là một tập hợp các mã thay đổi duy nhất với một tên duy nhất. Mỗi kho lưu trữ (repo) có thể có một hoặc nhiều branch.
Branch chính là branch tất cả các thay đổi cuối cùng được sát nhập vào – được gọi là branch master.
4. Checkout
Checkout là một thuật ngữ cũng là một lệnh được sử dụng để chuyển các branch. Người dùng có thể sử dụng lệnh git checkout sao tên branch mà bạn muốn chuyển đến hoặc nhập git master để trở về branch chính.
5. Fork
Fork là một bản sao của kho lưu trữ (repo). Lợi ích của fork là để chạy thử nghiệm các thay đổi mà không ảnh hưởng đến kết quả của dự án.
6. Fetch
Git fetch là lệnh được sử dụng để tìm nạp các bản sao và tải xuống vào máy tính của bạn. Git fetch sẽ lưu các thay đổi mới nhất vào repository và cùng lúc đó có thể tìm nạp branch.
7. Head
Các commit ở đầu của một branch được gọi là head. Nó có thể được hiểu là “nhánh hiện tại”. Khi bạn thực hiện quá trình chuyển nhánh bằng lệnh checkout thì HEAD sẽ được chuyển sang nhánh mới.
8. Index
Chỉ mục(index) được sử dụng để thiết lập một tập hợp các thay đổi mà bạn muốn thực hiện. Bất cứ khi nào người dùng thực hiện thao tác thêm, xóa hoặc thay đổi một file, nó vẫn nằm trong chỉ mục cho đến khi bạn sẵn sàng commit các thay đổi. Nó như là khu vực tổ chức (stagging area) cho Git.
9. Merge
Git merge thường sẽ được người dùng sử dụng khi muốn gộp hai branch lại với nhau
10. Origin
Theo thuật ngữ gốc thì Origin được đề cập đến kho lưu trữ từ xa, nơi bạn muốn xuất bản commit của mình. Nó được cho là một bí danh của hệ thống.
Origin đóng vai trò để liên lạc với nhánh chính
11. Master
Master là nhánh chính của tất cả các repo.
12. Pull
Thuật ngữ Pull requests thường được sử dụng để thể hiện các đề xuất thay đổi cho nhánh chính. Trong quá trình bạn làm việc theo nhóm thì các pull request sẽ được sử dụng để yêu cầu người bảo trì kho lưu trữ xem xét các thay đổi và hợp nhất chúng sao cho phù hợp nhất.
13. Push
Push(Đẩy) là thuật ngữ đẩy được sử dụng khi đề cập đến việc tải nội dung kho lưu trữ cục bộ lên một kho lưu trữ từ xa. Quá trình đẩy có khả năng ghi đè các thay đổi, chính bởi vậy người dùng cần lưu ý và thận trọng khi push.
14. Remote
Remote (kho lưu trữ từ xa) là một bản sao của một chi nhánh. Remote có thể liên hệ ngược lại với nhánh gốc (origin branch) và các remote trong kho lưu trữ.
15. Rebase
Git rebase sẽ được sử dụng để phân tách, di chuyển và thoát commit. Rebase còn được sử dụng để kết hợp hai nhánh lại với nhau.
Các lệnh Git cơ bản
Lệnh 1: Git config
Git config là một lệnh thông dụng nhất của hệ thống quản lý phiên bản phân tán Git. Nó được dùng để set user name và email của bạn trong main configuration file.
Lệnh 2: Git init
Git init được sử dụng khi người dùng muốn khởi tạo 1 git repository cùng với 1 project mới
Lệnh 3: Git Clone
Tác dụng của Git Clone là để copy 1 git repository từ remote source
Cách sử dụng: git clone <:clone git url:>
Lệnh 4: Git status
Khi bạn muốn kiểm tra trạng thái của các file mà bạn đã thay đổi trong thư mục làm việc thì bạn nên sử dụng lệnh Git Status. Với lệnh này bạn sẽ thấy được tất cả những thay đổi cuối cùng từ lần commit cuối.
Sử dụng lệnh git status để xem nội dung của index của bạn.
Nếu các file chưa được dàn dựng thì đang ở trong chỉ mục(index). Bạn dùng lệnh git status để xem nội dung index của bạn bằng cách:
git status
Lệnh 5: Git add
Lệnh Git add là một trong những lệnh quan trọng nhất của hệ thống Git. Nó có tác dụng thêm các thay đổi đến stage/index ở bên trong thư mục làm việc. Lệnh này cò có thể cập nhật nội dung hiện tại của vùng làm việc vào vùng dàn dựng. Cùng với đó nó cũng chuẩn bị nội dung được dàn dựng cho lần commit tiếp theo.
Lệnh 6: Git commit
Lệnh Git commit với mục đích chính là lưu lại một snapshot của các thay đổi bên trong thư mục làm việc. Người dùng có thể sử dụng lệnh commit kết hợp với lệnh Git add để cho git biết những thay đổi của bạn và lưu vào kho lưu trữ repositoty để từ đó quản lý được quá trình thay đổi tập tin.
Lệnh 7: Git push/ Git Pull
Lệnh git pull được sử dụng để thêm các thay đổi vào nhánh chính. Git Pull là lệnh dùng để tải dữ liệu từ một Remote repository và cập nhật Local repository phù hợp. Nói cách khác, Git Pull được sử dụng để hợp nhất các thay đổi từ Remote repository vào Local repository
Lệnh git push dùng để đẩy các commit mới ở local repo lên
Cách sử dụng: git pull <:remote:> <:branch:> and git push <:remote:> <:branch:>
Lệnh 8: Git branch
Lệnh sẽ thực hiện liệt kê tất cả các branch (nhánh).Cách sử dụng: git branch hoặc git branch -a
Lệnh 9: Git checkout
Git checkout có tác dụng chuyển sang một branch khác. Để hoạt động được, lệnh Git checkout dựa trên ba thực thể khác nhau là file, commit và nhánh. Mặc dù là lệnh quan trong nhưng đôi khi việc sử dụng lệnh này có thể gây ra nguy hiểm vì không có tùy chọn hoàn lại có sẵn trên lệnh này.
Cách sử dụng như sau: git checkout <: branch:> hoặc ** _ git checkout -b <: branch:> nếu như bạn đang muốn tạo hoặc chuyển sang bằng một nhánh mới.
Lệnh 10: Git stash
Tác dụng của git stash là lưu các thay đổi mà bạn không muốn commit ngay lập tức. Lệnh này thường rất hữu dụng khi bạn muốn đổi sang 1 branch khác trong khi đang làm dở ở branch hiện tại.
Cách sử dụng: $ git stash save # or just "git stash"
Lệnh 11: Git merge
Tác dụng của lệnh Git merge là gộp 2 branch lại với nhau. Khi gộp 2 branch người dùng sẽ căn cứ vào 3 commit để tạo ra một commit gộp.
Cấu trúc lệnh:
$ git merge Hoặc $ git merge
Lệnh 12: git reset
Tác dụng của lệnh là bỏ một tập tin ra khỏi Staging Area để đặt lại các thay đổi. Lệnh git reset có ba hình thức gọi chính là:
Git Reset là một lệnh linh hoạt. Nó hoạt động như một cỗ máy thời gian cho Git, bạn có thể nhảy lên và qua lại giữa các commit khác nhau. Ngoài ra, git reset có thể hoạt động trên commit hoặc ở cấp file riêng lẻ.
Lệnh 13: git remote
Khi chúng ta cần tìm nạp một kho lưu trữ một cách ngầm định, git remote sẽ thêm một điều khiển từ xa cho kho lưu trữ. Ngoài ra, chúng ta có thể thêm một điều khiển từ xa làm biệt hiệu
Cú pháp: git remote add < tên ngắn >
Trên đây, là tất cả các thông tin cơ bản liên quan đến hệ thống quản lý phiên bản phân tán Git mà chúng tôi muốn gửi đến bạn đọc. Hy vọng rằng, với những thông tin trên đây đã giúp bạn hiểu thêm về Git và sử dụng hiệu quả nhất.
Những kiến thức về lập trình khác bạn nên đọc: