Hướng dẫn cơ bản về Git

1. Cấu hình Git lần đầu chạy

git config --list --show-origin

git config --global user.name ten_nguoi_dung
git config --global user.email dia_chi_email

2. Trợ giúp các lệnh Git

git help lenh
git lenh --help
man git lenh

# danh sách đơn giản
git lenh -h

3. Lấy kho lưu trữ Git

# 1. Khởi tạo trong thư mục hiện có
git init

# 2. Sao chép kho lưu trữ
git clone duong_dan ten_thu_muc

4. Ghi nhận các cập nhật vào kho mới

Kiểm tra trạng thái tập tin

git status

# xuất kết quả ngắn gọn
git status -s

Theo dõi tập tin mới

git add ten_tap_tin

Lệnh này có thể bắt đầu theo dõi tập tin mới, hoặc đưa tập tin đã theo dõi vào vùng dàn xếp, cũng như đánh dấu tập tin có xung đột là đã giải quyết khi hợp nhất. Hiểu đơn giản là "thêm chính xác nội dung vào lần commit tiếp theo" thay vì "thêm tập tin vào dự án".

Bỏ qua tập tin
Tập tin .gitignore có quy định về định dạng như sau:

  • Tất cả các dòng trống hoặc bắt đầu bằng # đều được Git bỏ qua.
  • Có thể sử dụng glob pattern chuẩn, áp dụng đệ quy trong toàn bộ workspace.
  • Mẫu so khớp có thể bắt đầu bằng (/) để ngăn chặn đệ quy.
  • Mẫu so khớp có thể kết thúc bằng (/) để chỉ định thư mục.
    Glob pattern là biểu thức chính quy đơn giản mà shell sử dụng. Dấu sao (*) khớp với không hoặc nhiều ký tự bất kỳ; [abc] khớp với bất kỳ ký tự nào trong ngoặc vuông (ví dụ khớp a, b hoặc c); dấu chấm hỏi (?) chỉ khớp với một ký tự bất kỳ; nếu dùng gạch ngang trong ngoặc vuông để phân cách hai ký tự, tất cả các ký tự trong phạm vi đó đều khớp (ví dụ [0-9] khớp các số từ 0 đến 9). Dùng hai dấu sao (**) để khớp với bất kỳ thư mục trung gian nào, ví dụ a/**/z khớp với a/z, a/b/z hoặc a/b/c/z.
    Để bỏ qua các tập tin hoặc thư mục ngoài mẫu chỉ định, thêm dấu chấm than (!) vào trước mẫu để phủ định.
# Bỏ qua tất cả tập tin .a
*.a

# Nhưng theo dõi tất cả lib.a, mặc dù đã bỏ qua .a ở trên
!lib.a

# Chỉ bỏ qua tập TODO trong thư mục hiện tại, không bỏ qua subdir/TODO
/TODO

# Bỏ qua mọi thư mục có tên build trong bất kỳ thư mục nào
build/

# Bỏ qua doc/notes.txt, nhưng không bỏ qua doc/server/arch.txt
doc/*.txt

# Bỏ qua tất cả tập tin .pdf trong doc/ và các thư mục con
doc/**/*.pdf

Xem các thay đổi đã dàn xếp hoặc chưa dàn xếp

# 1. Xem thay đổi chưa dàn xếp
git diff

# 2. Xem thay đổi đã dàn xếp
git diff --staged

Commit các cập nhật

git commit -m noi_dung

# Bỏ qua bước sử dụng vùng dàn xếp
git commit -a -m noi_dung

Khi thêm tùy chọn -a vào git commit, Git sẽ tự động dàn xếp tất cả các tập tin đã theo dõi trước đó và commit cùng lúc, do đó bỏ qua bước git add.

Xóa tập tin

# 1. Xóa khỏi quản lý phiên bản
git rm ten_tap_tin

# 2. Giữ tập tin trên đĩa, Git không theo dõi nữa
git rm --cached ten_tap_tin

Di chuyển tập tin

git mv tap_tin_nguon tap_tin_dich

5. Nhật ký Git

# Hiển thị sự khác biệt của mỗi commit, tùy chọn -2 chỉ hiển thị 2 commit gần nhất
git log -p -2
Tùy chọn Mô tả
-p Hiển thị sự khác biệt theo định dạng patch cho mỗi commit
--stat Hiển thị thống kê các tập tin đã sửa đổi cho mỗi commit
--shortstat Chỉ hiển thị dòng thay đổi/thêm/xóa từ --stat
--name-only Chỉ hiển thị danh sách tập tin đã sửa đổi sau thông tin commit
--name-status Hiển thị danh sách tập tin mới, sửa đổi, xóa
--abbrev-commit Chỉ hiển thị vài ký tự đầu của SHA-1 thay vì 40 ký tự đầy đủ
--relative-date Sử dụng thời gian tương đối ngắn
--graph Hiển thị đồ thị ASCII về lịch sử nhánh và hợp nhất bên cạnh log
--pretty Sử dụng định dạng khác cho thông tin commit lịch sử
--oneline Viết tắt của --pretty=oneline --abbrev-commit

Giới hạn độ dài kết quả

Tùy chọn Mô tả
-<n> Chỉ hiển thị n commit gần nhất
--since,--after Chỉ hiển thị các commit sau thời gian chỉ định
--until,--before Chỉ hiển thị các commit trước thời gian chỉ định
--author Chỉ hiển thị các commit của tác giả khớp với chuỗi cho trước
--committer Chỉ hiển thị các commit của người commit khớp với chuỗi cho trước
--grep Chỉ hiển thị các commit có mô tả chứa chuỗi cho trước
-S Chỉ hiển thị các commit thêm hoặc xóa nội dung khớp với chuỗi cho trước

6. Thao tác hoàn tác

Hoàn tác commit

Tình huống: Sau khi commit mới phát hiện thiếu vài tập tin hoặc viết sai thông điệp commit

git commit --amend

Lệnh này sẽ commit các tập tin trong vùng dàn xếp. Nếu chưa có thay đổi nào kể từ lần commit trước (ví dụ chạy ngay sau khi commit), thì snapshot sẽ giữ nguyên, chỉ thay đổi thông điệp commit.
Trình soạn thảo văn bản khởi động, có thể thấy thông điệp commit trước đó. Sau khi chỉnh sửa và lưu, thông điệp mới sẽ thay thế thông điệp cũ.

Ví dụ, sau khi commit phát hiện quên dàn xếp một số thay đổi cần thiết, có thể làm như sau:

git commit -m 'commit ban dau'
git add tap_tin_quen
git commit --amend

Kết quả cuối cùng chỉ có một commit - lần commit thứ hai sẽ thay thế kết quả của lần commit đầu tiên.

Hủy dàn xếp tập tin

git reset HEAD ten_tap_tin

Hoàn tác thay đổi đối với tập tin

Thuận tiện để hoàn tác thay đổi - khôi phục về trạng thái lần commit trước (hoặc trạng thái ngay sau khi clone, hoặc trạng thái khi vừa đưa vào thư mục làm việc)

git checkout -- ten_tap_tin

Thẻ: git version-control git-basics github

Đăng vào ngày 18 tháng 7 lúc 19:09