Nội dung chính
- Tổng quan về Git
- Chức năng của Git
- Các lệnh Git cơ bản để Cấu hình và khởi tạo Repository
- Các lệnh Git cơ bản để Quản lý file và thư mục
- Các lệnh Git cơ bản để làm việc với Branch
- Các lệnh Git cơ bản để Stage và Commit
- Các lệnh Git cơ bản để Chia sẻ Repository và làm việc nhóm
- Các lệnh Git cơ bản để Kiểm tra thay đổi và lịch sử
- Các lệnh Git cơ bản để Hoàn tác commit
- Các câu hỏi thường gặp về các lệnh Git cơ bản
- Tổng kết Các lệnh Git cơ bản
Ngày nay, với khả năng cung cấp các tính năng cho phép nhiều lập trình viên cùng làm việc trên một mã nguồn, giúp theo dõi mọi thay đổi đã xảy ra và quản lý các phiên bản, Git đã trở thành một công cụ có vai trò thiết yếu trong lĩnh vực phát triển phần mềm. Tuy nhiên cú pháp của Git có thể sẽ gây khó khăn cho người mới bắt đầu, bài viết này sẽ giúp bạn làm quen với các lệnh cơ bản thường dùng trong Git, giúp quá trình làm việc với mã nguồn trở nên dễ dàng hơn.
Đọc bài viết để hiểu rõ:
- Các lệnh Git cơ bản để Cấu hình và khởi tạo Repository
- Các lệnh Git cơ bản để Quản lý file và thư mục
- Các lệnh Git cơ bản để làm việc với Branch
- Các lệnh Git cơ bản để Stage và Commit
- Các lệnh Git cơ bản để Chia sẻ Repository và làm việc nhóm
- Các lệnh Git cơ bản để Kiểm tra thay đổi và lịch sử
- Các lệnh Git cơ bản để Hoàn tác commit
Tổng quan về Git
Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System) được ra mắt vào năm 2005 bởi Linus Torvalds. Git giúp các lập trình viên quản lý các phiên bản của mã nguồn và theo dõi các thay đổi đã xảy ra trên đó.
Đồng thời, Git cho phép các lập trình viên có thể cùng làm việc đồng thời trên một mã nguồn, nâng cao khả năng cộng tác và hiệu suất làm việc.
Đọc thêm: Git là gì: Định nghĩa, Thuật ngữ cơ bản và Cách cài đặt
Chức năng của Git
Git đóng vai trò lưu trữ lịch sử thay đổi của mã nguồn, bao gồm cả những thông tin chi tiết như nội dung thay đổi, thời gian thay đổi và người đã thay đổi. Đồng thời, lập trình viên có thể quay trở lại một phiên bản trước đó trong mã nguồn một cách nhanh chóng.
Một điểm nổi bật của Git đó là khả năng tách nhánh và gộp nhánh. Lập trình viên có thể tạo ra một nhánh độc lập để xây dựng các tính năng mới và không làm ảnh hưởng đến mã nguồn đang chạy ổn định hiện tại. Khả năng này còn giúp cho các thành viên trong team có thể cùng làm việc đồng thời trên một mã nguồn và hợp nhất các thay đổi của từng người một cách dễ dàng.
Các lệnh Git cơ bản để Cấu hình và khởi tạo Repository
Git init
Git init dùng để khởi tạo một repository mới tại thư mục hiện tại, chỉ cần chạy một lần duy nhất lúc tạo mới repository.
Cú pháp:
git init
Git clone
Git clone tạo ra bản sao làm việc cục bộ của một repository ở kho lưu trữ từ xa thông qua URL, chỉ cần chạy một lần duy nhất khi chưa có bản sao ở máy cục bộ.
Cú pháp:
git clone [url]
Trong đó, URL chính là địa chỉ remote repository.
Git config
Git config có chức năng dùng để thiết lập các thông số như thông tin người dùng, hành vi của Git trong phạm vi một repository hoặc toàn bộ repository trong máy cá nhân. Git config thường được sử dụng ngay sau khi cài đặt Git, hoặc trong trường hợp làm việc ở nhiều repository với nhiều tên tác giả khác nhau.
Cú pháp:
git config [--global] <thuộc tính cấu hình> <giá trị>
Trong đó, cờ –global được sử dụng để áp dụng các thiết lập vào tất cả các repository trên máy tính. Nếu không có cờ –global, các thiết lập sẽ chỉ áp dụng cho repository hiện tại đang được thao tác.
Một số trường hợp sử dụng Git config
Thiết lập thông tin người dùng:
git config --global user.email "example@itviec.com" git config --global user.name "IT Viec"
Xem các cấu hình hiện tại:
git config --global --list
Thiết lập editor mặc định cho Git:
git config --global core.editor "code --wait"
Các lệnh Git cơ bản để Quản lý file và thư mục
Git status
Git status có chức năng hiển thị trạng thái hiện tại của các tập tin trong khu vực làm việc và khu vực Staging.
Cú pháp:
git status
Với Git status, chúng ta có thể thấy được:
- Những tập tin có sự thay đổi đã được thêm vào Staging Area để chuẩn bị commit.
- Những tập tin có thay đổi hoặc bị xóa nhưng chưa được thêm vào Staging Area.
- Các tập tin mới được tạo nhưng chưa được lưu trữ trong repository (untracked).
- Trạng thái của branch hiện tại và các commit đã thực hiện.
Git add
Trước khi thực hiện commit các thay đổi vào Repository, các thay đổi đó cần được thêm vào khu vực Staging, lúc đó chúng ta sẽ cần đến lệnh Git add.
Cú pháp:
git add <tập tin hoặc thư mục>
Một số trường hợp sử dụng Git add
Thêm toàn bộ thư mục:
git add folder_name/
Thêm tập tin cụ thể:
git add file_name
Thêm tất cả các tập tin có sự thay đổi vào khu vực Staging:
git add .
Git rm
Lệnh git rm được sử dụng để xóa file khỏi khu vực làm việc hoặc khu vực Staging. Sau khi thực hiện, file bị xóa sẽ không còn được theo dõi trong repository. Tuy nhiên điều này chỉ hoàn tất khi bạn thực hiện commit thay đổi đó.
Cú pháp:
git rm <tên thư mục hoặc tên file>
Các lệnh Git cơ bản để làm việc với Branch
Git branch
Git branch dùng để quản lý nhánh trong repository. Branch là đơn vị để tách biệt công việc đang thực hiện, điều này giúp việc phát triển các tính năng mới không làm ảnh hưởng đến branch chính đang hoạt động ổn định.
Cú pháp:
git branch <tùy chọn> <tên branch>
Một số trường hợp sử dụng Git branch
Với việc kết hợp các tùy chọn, git branch được sử dụng trong các trường hợp như:
Tạo branch mới:
git branch <tên branch mới>
Xóa branch:
git branch -d <tên branch>
Nếu branch chưa được hợp nhất vào branch khác, bạn cần sử dụng -D:
git branch -D <tên branch>
Đổi tên branch hiện tại:
git branch -m <tên mới>
Kiểm tra danh sách branch đang có:
git branch <-a | -r>
Trong đó, -a để hiển thị tất cả các branch (ở cục bộ và kho từ xa), -r để hiển thị các branch trên kho lưu trữ từ xa, nếu không có tùy chọn đi kèm, git branch sẽ hiển thị các branch ở cục bộ.
Git checkout
Git checkout được sử dụng để chuyển đổi trạng thái làm việc giữa các branches hoặc các phiên bản.
Cú pháp:
git checkout <tên branch>
Một số chức năng khác của Git checkout
Ngoài ra, bạn có thể thực hiện một số chức năng khác khi kết hợp với các tùy chọn:
Sử dụng -b để thực hiện đồng thời việc tạo branch mới và chuyển trạng thái làm việc sang branch mới tạo:
git checkout -b <tên branch mới>
Sử dụng — để khôi phục trạng thái trước đó của tập tin:
git checkout -- <tên tập tin>
Chuyển đến trạng thái làm việc của một commit:
git checkout <commit id>
Git switch
Đây là một lệnh mới được bổ sung ở các phiên bản gần đây, nó được tạo ra với chức năng chuyển đổi trạng thái làm việc giữa các branches. Điều này giúp tách biệt chức năng với lệnh git checkout (có nhiều tác vụ khác như chuyển commit, khôi phục tập tin)
Cú pháp:
git switch <tên branch>
Lệnh git switch cũng có tùy chọn để thực hiện đồng thời công việc tạo branch mới và chuyển sang branch đó:
git switch -c <tên branch>
Các lệnh Git cơ bản để Stage và Commit
Git stash
Lệnh này dùng để lưu trữ tạm thời các thay đổi đã được thực hiện nhưng chưa được commit và khiến cho khu vực làm việc trở nên sạch sẽ.
Cú pháp:
git stash
Ví dụ:
- Khu vực làm việc đang có một số tập tin thay đổi:
- Khu vực làm việc sau khi sử dụng git stash:
Các cách sử dụng Git stash
Trường hợp nếu muốn khôi phục các thay đổi đã lưu trước đó, bạn có thể sử dụng các cách sau:
Khôi phục một stash cụ thể và vẫn lưu trữ lại stash đó:
git stash apply <stash id>
Khôi phục stash mới nhất và xóa bỏ stash đó:
git stash pop
Kiểm tra danh sách stash hiện tại:
git stash list
Git commit
Lệnh này sẽ tạo ra các commit lưu lại các thay đổi được xảy ra trên tập tin vào repository. Mỗi commit sẽ có một id định danh duy nhất được sử dụng để thực hiện các thao tác và quản lý. Mỗi lần commit, nên cần đính kèm một nội dung mô tả tổng quát những thay đổi được thực hiện trong commit.
Cú pháp:
git commit -m "nội dung mô tả"
Mỗi commit sẽ chứa các thông tin về:
- Các thay đổi đã thực hiện
- Tác giả của commit
- Thời gian commit
- Nội dung mô tả các thay đổi
Trường hợp cần thay đổi nội dung của một commit trước đó, bạn có thể thực hiện bằng cú pháp:
git commit -amend
Bên cạnh đó, để kết hợp thao tác git add và git commit, bạn có thể thực hiện như sau:
git commit -a -m "nội dung mô tả"
Các lệnh Git cơ bản để Chia sẻ Repository và làm việc nhóm
Git remote
Git remote dùng để kết nối kho lưu trữ cục bộ với kho lưu trữ từ xa. Kho lưu trữ từ xa có thể được đặt tên riêng (thường sử dụng origin) để tránh phải nhớ URL mỗi khi thực hiện các thao tác có liên quan.
Cú pháp:
git remote <command> <tên bí danh> <remote URL>
Một số trường hợp sử dụng:
Thêm một kho lưu trữ từ xa mới:
git remote add origin <remote url>
Xóa kết nối một kho lưu trữ từ xa:
git remote remove origin
Đổi tên bí danh của kho lưu trữ từ xa:
git remote rename origin new_name
Hiển thị danh sách các kho lưu trữ xa hiện có:
Git push
Git push có chức năng gửi các commit hoặc tags ở kho lưu trữ cục bộ đến kho lưu trữ từ xa. Git push cần xác định 2 tham số là tên kho lưu trữ từ xa và tên branch đang thực hiện
Cú pháp:
git push origin <tên branch>
Nếu trường hợp đây là lần đầu tiên đẩy branch lên kho lưu trữ từ xa, bạn có thể sử dụng tùy chọn -u (upsteam), điều này sẽ thiết lập branch hiện tại theo dõi branch tương ứng trên kho lưu trữ từ xa. Những lần thực hiện git push sau đó, bạn không cần phải chỉ định tên branch.
git push -u origin <tên branch>
Git fetch
Lệnh git fetch được sử dụng để cập nhật tất cả các thay đổi mới từ kho lưu trữ từ xa về kho lưu trữ cục bộ mà không tự động hợp nhất chúng vào nhánh cục bộ. Đây là một lệnh an toàn, cho phép bạn kiểm tra các thay đổi mới trước khi quyết định hợp nhất chúng.
Cú pháp:
git fetch <tên remote>
Ngoài ra, để lấy tất cả branches, tags và commits từ kho lưu trữ từ xa, bạn có thể sử dụng tùy chọn –all
git fetch --all
Git merge
Git merge được sử dụng để hợp nhất các thay đổi từ branch này sang branch khác. Khi hợp nhất, nó sẽ áp dụng các commit của branch được merge vào branch hiện tại. Trường hợp giữa hai branch có một số commit mới kể từ lần tách branch trước đó, lệnh merge sẽ tạo ra một commit hợp nhất ghi lại nội dung kết hợp giữa hai branch.
Cú pháp:
git merge <tên branch>
Git rebase
Git rebase có chức năng tương tự như Git merge, dùng để hợp nhất các thay đổi từ branch này sang branch hiện tại. Tuy nhiên, khác với git merge, git rebase sẽ lấy tất cả commit từ branch được merge chèn lên đầu trong danh sách commit của branch hiện tại và không tạo ra commit hợp nhất.
Cú pháp:
git rebase <tên branch>
Git pull
Git pull sẽ lấy về tất cả thay đổi từ kho lưu trữ từ xa và hợp nhất chúng vào branch hiện tại, hay nói cách khác, git pull chính là sự kết hợp giữa git fetch và git merge.
Cú pháp:
git pull <tên remote> <tên branch>
Tuy nhiên, bạn có thể thay thế việc sử dụng git merge bằng git rebase trong lệnh git pull bằng cách sử dụng tùy chọn –rebase (hoặc viết tắt là -r):
git pull -r <tên remote> <tên branch>
Các lệnh Git cơ bản để Kiểm tra thay đổi và lịch sử
Git log
Lệnh dùng để hiển thị toàn bộ lịch sử commit theo thứ tự thời gian của một repository. Điều này giúp cung cấp bối cảnh và lịch sử của một repository.
Cú pháp:
git log
Git diff
Lệnh git diff được dùng để so sánh sự khác biệt giữa các phiên bản khác nhau của repository.
Cú pháp:
git diff <tùy chọn>
Trường hợp sử dụng Git diff
So sánh khác biệt giữa 2 commit
git diff <commit id 1> <commit id 2>
So sánh khác biệt giữa các tập tin trong khu vực Staging và phiên bản đã được commit trước đó.
git diff --staged
So sánh khác biệt giữa hai branches
git diff <branch 1> <branch 2>
Các lệnh Git cơ bản để Hoàn tác commit
Git revert
Git revert có chức năng tạo ra một commit đối lập với commit được chọn, giúp hoàn tác các thay đổi đã lưu vào repository một các dễ dàng. Đặc điểm của git revert là những commit được revert vẫn được lưu trữ trong repository và lịch sử commit không bị xáo trộn.
Cú pháp:
git revert <commit id>
Git reset
Git reset được sử dụng để loại bỏ commit đã được lưu vào repository và xóa bỏ chúng khỏi lịch sử commit.
Cú pháp:
git reset <tùy chọn> <commit id>
Trong đó, có ba tùy chọn để thực hiện reset bao gồm:
- –-hard: phá vỡ commit và xóa bỏ nội dung thay đổi của các tập tin
- –soft: phá vỡ commit và đưa các thay đổi về khu vực Staging
- –mixed: phá vỡ commit và đưa các thay đổi về khu vực làm việc
Các câu hỏi thường gặp về các lệnh Git cơ bản
Tại sao cần sử dụng git add trước khi thực hiện commit?
Việc thực hiện lệnh git add trước khi thực hiện commit được xem như là một hành động tiên quyết. Khi sử dụng git add, bạn có thể kiểm soát được những thay đổi nào sẽ được lưu trong một commit, những thay đổi nào không được phép lưu vào repository. Điều này giúp bạn kiểm soát được nội dung của commit và tránh rủi ro xảy ra sự cố.
Lệnh revert và lệnh reset khác nhau như thế nào?
Lệnh revert và reset đều có khả năng hoàn tác các thay đổi đã được commit, tuy nhiên chúng có hành vi hoàn toàn khác nhau:
Tiêu chí | Git revert | Git reset |
Hành động | Tạo ra một commit với nội dung đối lập với commit được revert | Loại bỏ commit khỏi kho lưu trữ và đưa các thay đổi trở lại khu vực làm việc |
Lưu lại lịch sử | Commit được revert vẫn còn lưu trong lịch sử commit | Commit được reset sẽ không còn dấu vết trong lịch sử commit |
Độ an toàn | Nếu commit được revert đã được đẩy lên remote repository, việc sử dụng revert sẽ giảm thiểu khả năng bị xung đột branch và tránh thiếu sót dữ liệu | Reset sẽ làm thay đổi lịch sử commit, vì vậy có thể xảy ra xung đột đối với các lập trình viên cùng cộng tác khác |
Làm sao để thay đổi tên tác giả của commit?
Sử dụng lệnh git commit –amend kèm theo tùy chọn author để thay đổi nội dung của một commit. Ví dụ:
git commit --amend --author="Tên Mới <email@example.com>"
Lúc này terminal sẽ mở ra một cửa sổ soạn thảo chứa các thông tin của commit, nếu bạn không muốn chỉnh sửa thông tin khác, có thể lưu và thoát khỏi trình soạn thảo.
Tổng kết Các lệnh Git cơ bản
Git là một công cụ quản lý mã nguồn mạnh mẽ và phổ biến bậc nhất hiện nay. Tuy nhiên cú pháp của nó có thể gây khó khăn cho người mới bắt đầu. Thông qua bài viết này, ITviec hi vọng bạn có thể nắm được các lệnh Git cơ bản thường sử dụng, từ đó tạo bước đệm vững chắc để tiếp tục chinh phục nó, mở ra cơ hội thăng tiến trong nghề nghiệp.