Hướng Dẫn Sử Dụng Git Toàn Diện: Từ Cơ Bản Đến Nâng Cao Cho Người Mới

Hướng Dẫn Sử Dụng Git Toàn Diện

Trong môi trường phát triển phần mềm hiện đại, Git là công cụ không thể thiếu giúp các nhóm lập trình viên và những người duy trì dự án mã nguồn mở quản lý phiên bản hiệu quả, theo dõi thay đổi và cộng tác một cách linh hoạt.

Hướng dẫn “cheat sheet” này cung cấp danh sách các lệnh Git quan trọng, giúp bạn thao tác nhanh chóng trong quá trình làm việc với kho mã nguồn. Nếu bạn chưa cài đặt và thiết lập Git, hãy tham khảo bài viết Hướng Dẫn Đóng Góp Cho Mã Nguồn Mở: Bắt Đầu Với Git để nắm bắt quy trình chi tiết.

Bạn đang học cách sử dụng Git để quản lý mã nguồn hiệu quả? Để triển khai dự án mượt mà, một VPS giá rẻ sẽ là lựa chọn tối ưu. Khám phá các gói VPS giá rẻ tại DataOnline, đảm bảo hiệu suất cao, phù hợp cho lập trình viên và doanh nghiệp nhỏ.

Cách sử dụng hướng dẫn này:

  • Đây là một hướng dẫn dạng “cheat sheet” với các đoạn lệnh dòng lệnh độc lập.
  • Bạn có thể chuyển ngay đến bất kỳ phần nào liên quan đến tác vụ bạn đang muốn thực hiện.
  • Khi thấy đoạn văn bản được tô sáng trong các lệnh của hướng dẫn, hãy nhớ rằng đoạn văn bản đó ám chỉ các commit và tệp trong kho (repository) của riêng bạn.

Thiết lập và khởi tạo

Kiểm tra phiên bản Git của bạn bằng lệnh sau, đồng thời xác nhận rằng Git đã được cài đặt:

git --version

Git cho phép bạn cấu hình một số thiết lập sẽ áp dụng cho tất cả các kho trên máy cục bộ của bạn. Ví dụ, cấu hình tên người dùng mà Git sẽ dùng để ghi nhận bạn với mọi thay đổi bạn thực hiện trong kho cục bộ:

git config --global user.name “firstname lastname”

Cấu hình địa chỉ email để gắn với từng “marker” lịch sử:

git config --global user.email “valid-email”

Cấu hình trình soạn thảo văn bản ưa thích:

git config --global core.editor “nano”

Bạn có thể khởi tạo (initialize) thư mục làm việc hiện tại thành một kho Git bằng lệnh init:

git init

Để sao chép (clone) một kho Git có sẵn trên máy chủ từ xa, bạn sẽ dùng git clone với URL hoặc vị trí của repo (nếu kết nối qua máy chủ, bạn sẽ dùng SSH):

git clone https://www.github.com/username/repo-name

Hiển thị kho từ xa (remote repository) của thư mục Git hiện tại:

git remote

Để có thông tin chi tiết hơn, sử dụng tham số -v:

git remote -v

Thêm “upstream” Git, có thể là một URL hoặc được lưu trữ trên máy chủ (trường hợp sau cần kết nối SSH):

git remote add upstream https://www.github.com/username/repo-name

Giai đoạn tạm thời

Khi bạn đã sửa đổi một tệp và đánh dấu tệp đó sẽ xuất hiện trong commit kế tiếp, tệp này được coi là đã “staged.”

Kiểm tra trạng thái kho Git của bạn, bao gồm các tệp đã thêm nhưng chưa được stage, và các tệp đã được stage:

git status

Để stage các tệp đã sửa đổi, dùng lệnh add, bạn có thể chạy nhiều lần trước khi commit. Nếu bạn chỉnh sửa tiếp và muốn đưa thay đổi mới vào commit kế, bạn phải chạy lại add.

Bạn có thể chỉ định chính xác tệp cụ thể:

git add my_script.py

Với dấu chấm (.), bạn có thể thêm tất cả tệp trong thư mục hiện tại, bao gồm cả tệp bắt đầu bằng dấu chấm:

git add .

Nếu bạn muốn thêm tất cả tệp trong thư mục hiện tại cũng như các thư mục con, bạn có thể dùng tham số -all hoặc -A:

git add -A

Bạn có thể xóa một tệp khỏi trạng thái staged (nhưng vẫn giữ các thay đổi trong thư mục làm việc) bằng lệnh reset:

git reset my_script.py

Cam kết

Khi bạn đã stage các cập nhật, bạn sẵn sàng commit chúng, qua đó ghi lại những thay đổi bạn đã thực hiện trong kho.

Để commit các tệp đã stage, bạn chạy lệnh commit kèm thông điệp ý nghĩa để tiện theo dõi:

git commit -m "Commit message"

Bạn có thể gộp bước stage tất cả các tệp đã theo dõi (tracked files) bằng cách commit chúng trong một bước duy nhất:

git commit -am "Commit message"

Nếu bạn cần chỉnh sửa thông điệp commit, bạn có thể làm thế với tham số --amend:

git commit --amend -m "New commit message"

Nhánh

Trong Git, một branch là một con trỏ di động trỏ đến một trong các commit trong kho, cho phép bạn cô lập công việc và quản lý phát triển tính năng cũng như tích hợp. Bạn có thể tìm hiểu thêm về branch trong tài liệu của Git.

Liệt kê tất cả branch hiện có với lệnh branch. Dấu hoa thị (*) sẽ xuất hiện cạnh branch hiện tại của bạn:

git branch

Tạo một branch mới. Bạn vẫn ở branch hiện tại cho đến khi bạn chuyển sang branch mới này:

git branch new-branch

Chuyển sang bất kỳ branch nào có sẵn và “check out” branch đó vào thư mục làm việc hiện tại:

git checkout another-branch

Bạn có thể gộp bước tạo và chuyển sang một branch mới bằng tham số -b:

git checkout -b new-branch

Đổi tên branch:

git branch -m current-branch-name new-branch-name

Trộn (merge) lịch sử của branch được chỉ định vào branch bạn đang làm việc:

git merge branch-name

Hủy merge trong trường hợp xảy ra xung đột:

git merge --abort

Bạn cũng có thể chọn một commit cụ thể để merge với cherry-pick kèm chuỗi tham chiếu commit:

git cherry-pick f7649d0

Khi bạn đã merge xong một branch và không còn cần branch đó nữa, bạn có thể xóa nó:

git branch -d branch-name

Nếu bạn chưa merge branch vào main, nhưng chắc chắn muốn xóa nó, bạn có thể xóa mạnh (force delete):

git branch -D branch-name

Hợp tác và cập nhật

Để tải về (fetch) các thay đổi từ một kho khác, ví dụ như kho upstream, bạn dùng:

git fetch upstream

Merge các commit đã fetch. Lưu ý một số kho có thể dùng master thay vì main:

git merge upstream/main

Push hoặc gửi các commit của branch cục bộ lên branch của kho từ xa:

git push origin main

Tải (fetch) và merge bất kỳ commit nào từ branch được theo dõi (tracking remote branch):

git pull

Kiểm tra

Hiển thị lịch sử commit cho branch hiện tại:

git log

Cho thấy các commit đã thay đổi một tệp cụ thể. Lệnh này theo dõi tệp kể cả khi tệp đã được đổi tên:

git log --follow my_script.py

Hiển thị các commit trên một branch mà không có trên branch khác. Ví dụ, hiển thị các commit trên a-branch mà không có trên b-branch:

git log a-branch..b-branch

Xem “reference logs” (reflog) để biết thời điểm các nhánh (branch) hoặc tham chiếu (reference) được cập nhật lần cuối trong kho:

git reflog

Xem bất kỳ đối tượng nào trong Git thông qua chuỗi commit hoặc mã băm (hash) của nó ở định dạng dễ đọc hơn:

git show de754f5

Hiển thị thay đổi

Lệnh git diff hiển thị sự khác biệt giữa các commit, các branch, v.v. Bạn có thể đọc thêm về nó trong tài liệu Git.

So sánh các tệp đã sửa đổi có trong khu vực staging:

git diff --staged

Hiển thị sự khác biệt giữa những gì có trên a-branch nhưng không có trên b-branch:

git diff a-branch..b-branch

So sánh sự khác biệt giữa hai commit cụ thể:

git diff 61ce3e6..e221d9c

Theo dõi các thay đổi về đường dẫn (path) bằng cách xóa tệp khỏi dự án và stage việc xóa này để commit:

git rm file

Hoặc thay đổi đường dẫn của một tệp hiện có rồi stage việc di chuyển:

git mv existing-path new-path

Kiểm tra log commit để xem có đường dẫn nào được chuyển đổi hay không:

git log --stat -M

Lưu trữ tạm thời

Đôi khi bạn nhận ra rằng mình đã sửa một số đoạn code, nhưng trước khi hoàn thành, bạn phải bắt đầu làm việc khác. Bạn chưa sẵn sàng commit những thay đổi này, nhưng cũng không muốn mất chúng. Lệnh git stash cho phép bạn lưu lại các chỉnh sửa cục bộ và quay trở về thư mục làm việc trùng với commit HEAD gần nhất.

Lưu trữ (stash) công việc hiện tại:

git stash

Xem những gì bạn đang stash:

git stash list

Các stash sẽ được đặt tên dạng stash@{0}, stash@{1}, v.v.

Hiển thị thông tin về một stash cụ thể:

git stash show stash@{0}

Để đưa các tệp trong stash hiện tại ra ngoài stash nhưng vẫn giữ stash đó, dùng apply:

git stash apply stash@{0}

Nếu bạn muốn đưa các tệp ra khỏi stash và không cần giữ stash nữa, dùng pop:

git stash pop stash@{0}

Nếu bạn không còn cần các tệp đã lưu trong một stash cụ thể, bạn có thể xóa stash đó:

git stash drop stash@{0}

Nếu bạn có nhiều stash và không cần dùng bất kỳ stash nào, bạn có thể dùng clear để xóa tất cả:

git stash clear

Loại bỏ tệp khỏi theo dõi

Nếu bạn muốn giữ một số tệp trong thư mục Git cục bộ nhưng không muốn commit chúng vào dự án, bạn có thể thêm chúng vào tệp .gitignore để chúng không gây xung đột.

Dùng trình soạn thảo văn bản như nano để thêm tệp vào .gitignore:

nano .gitignore

Để xem ví dụ về các tệp .gitignore, bạn có thể tham khảo kho mẫu .gitignore trên GitHub:

Tái lập nền

Rebase cho phép chúng ta di chuyển các nhánh bằng cách thay đổi commit mà nhánh đó dựa vào. Với rebasing, bạn có thể “squash” (gộp) hoặc sửa lại (reword) các commit.

Bạn có thể bắt đầu quá trình rebase bằng cách gọi số commit bạn đã thực hiện muốn rebase (trong ví dụ dưới là 5):

git rebase -i HEAD~5

Hoặc bạn có thể rebase dựa trên một chuỗi commit hoặc mã băm cụ thể:

git rebase -i 074a4e5

Khi bạn đã squash hoặc reword các commit, bạn có thể hoàn tất rebase nhánh của mình trên phiên bản mới nhất của mã nguồn upstream. Lưu ý một số kho có thể dùng master thay vì main:

git rebase upstream/main

Để tìm hiểu thêm về rebasing và cập nhật, bạn có thể đọc Cách Rebase và Cập Nhật Pull Request, áp dụng cho bất kỳ loại commit nào.

Hoàn nguyên và đặt lại

Bạn có thể hoàn tác (revert) các thay đổi đã thực hiện trong một commit cụ thể bằng lệnh revert. Thư mục làm việc của bạn cần “sạch” (clean) để thực hiện thao tác này:

git revert 1fc6665

Đôi khi, ví dụ sau khi rebase, bạn cần reset thư mục làm việc. Bạn có thể reset về một commit cụ thể và xóa tất cả thay đổi:

git reset --hard 1fc6665

Để đẩy (push) commit cuối cùng không xung đột lên kho origin, bạn sẽ cần dùng --force:

Cảnh báo: Force pushing lên nhánh main (hoặc đôi khi là master) thường không được khuyến khích trừ khi có lý do thực sự quan trọng. Hãy sử dụng cẩn trọng khi làm việc trên kho của chính bạn, và cố gắng tránh thao tác này khi cộng tác với người khác.

git push --force origin main

Để xóa các tệp và thư mục con chưa được theo dõi (untracked) khỏi thư mục Git cho một nhánh làm việc sạch sẽ, bạn có thể dùng:

git clean -f -d

Nếu bạn cần thay đổi kho cục bộ của mình để nó giống với nhánh main của upstream (ví dụ có quá nhiều xung đột), bạn có thể thực hiện reset “cứng” (hard reset):

Lưu ý: Thao tác này sẽ khiến kho cục bộ của bạn trông chính xác như kho upstream. Bất kỳ commit nào bạn đã tạo nhưng chưa được pull vào upstream sẽ bị xóa.

git reset --hard upstream/main

Kết Luận

Hướng dẫn này đã giới thiệu các lệnh Git quan trọng giúp bạn quản lý kho mã nguồn và làm việc nhóm hiệu quả. Nắm vững những lệnh này sẽ giúp bạn tối ưu hóa quy trình phát triển và dễ dàng cộng tác trong các dự án phần mềm.

Khi làm quen với Git, việc lưu trữ và chạy dự án trên máy chủ là cần thiết. Thuê VPS tại DataOnline giúp bạn triển khai ứng dụng dễ dàng với chi phí hợp lý. Tìm hiểu ngay các dịch vụ thuê VPS chất lượng, hỗ trợ tối ưu cho lập trình viên.

Bạn có thể tìm hiểu thêm về phần mềm mã nguồn mở và cách cộng tác trong chuỗi hướng dẫn “Giới Thiệu về Mã Nguồn Mở”:

Vẫn còn nhiều lệnh và biến thể hữu ích khác mà bạn có thể cần dùng trong quá trình làm việc với Git. Để tìm hiểu thêm về các tùy chọn có sẵn, bạn có thể chạy:

git --help

Bạn cũng có thể đọc thêm về Git và xem tài liệu chính thức tại trang web của Git: https://git-scm.com/

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *