Domain 1 · 9 phút đọc

Repository và ba trạng thái của file

The Repository and the Three States

Tạo một repository là bước biến thư mục thường thành một dự án được Git theo dõi. Hiểu ba trạng thái mà một file có thể nằm trong đó là nền tảng để dùng đúng mọi lệnh Git sau này.

Repository và thư mục .git

Một repository (gọi tắt là repo) là một dự án được Git theo dõi. Toàn bộ lịch sử, branch và cấu hình được Git lưu trong một thư mục con ẩn tên .git nằm ngay tại gốc dự án.

ls -a        # sẽ thấy thư mục .git khi đã là một repo

Xoá thư mục .git đồng nghĩa với việc xoá toàn bộ lịch sử Git; các file code của bạn vẫn còn nhưng không còn được theo dõi nữa.

Tạo repository: git init và git clone

Có hai cách bắt đầu một repo:

# Khởi tạo repo mới từ thư mục hiện tại
git init

# Sao chép một repo đã có (kèm full lịch sử) về máy
git clone https://github.com/user/project.git
  • git init tạo thư mục .git trống trong dự án hiện tại — dùng khi bắt đầu một dự án mới.
  • git clone sao chép clone một repo từ xa về, gồm cả lịch sử và branch — dùng khi tham gia một dự án đã tồn tại.

Ba trạng thái cốt lõi

Trong Git, một file thay đổi đi qua ba khu vực:

  • Working tree: thư mục làm việc thật, nơi bạn mở và sửa file.
  • Staging area (còn gọi là index): vùng tạm, chứa "ảnh chụp" những thay đổi bạn chọn đưa vào commit kế tiếp.
  • Committed: thay đổi đã được ghi vĩnh viễn vào lịch sử trong .git.
Khu vựcVai tròĐưa vào bằng
Working treeNơi bạn sửa file(mở editor)
Staging area (index)Chọn lọc thay đổi cho commit tớigit add
Committed (.git)Lịch sử đã lưu vĩnh viễngit commit

Luồng cơ bản: bạn sửa file trong working tree, dùng git add để đưa thay đổi vào staging area, rồi git commit để ghi vào lịch sử.

git status: la bàn của bạn

git status cho biết file đang ở trạng thái nào — đây là lệnh bạn sẽ chạy thường xuyên nhất:

git status

Nó cho biết:

  • File nào chưa được theo dõi (untracked).
  • File nào đã sửa nhưng chưa add (changes not staged).
  • File nào đã add và sẵn sàng commit (changes to be committed).
  • Branch hiện tại và liệu có lệch so với remote không.
git status -s    # bản rút gọn, mỗi file một dòng

Staging area để làm gì

Staging area cho phép bạn chọn lọc: chỉ commit một phần thay đổi đang có trong working tree. Nhờ đó bạn gom các thay đổi liên quan vào cùng một commit gọn gàng thay vì commit lẫn lộn mọi thứ.

Trọng tâm thi

Ghi nhớ ba khu vực và lệnh chuyển giữa chúng: working tree → (git add) → staging area/index → (git commit) → committed. git status cho biết mỗi file đang nằm ở đâu.

Tóm tắt

  • Repository là dự án được Git theo dõi; toàn bộ lịch sử nằm trong thư mục ẩn .git.
  • git init tạo repo mới; git clone sao chép một repo đã có kèm full lịch sử.
  • Ba trạng thái: working tree (sửa file) → staging area/index (git add) → committed (git commit, lưu vĩnh viễn).
  • Staging area cho phép chọn lọc thay đổi để gom thành commit gọn gàng.
  • git status là la bàn: cho biết file đang untracked, đã sửa chưa add, hay đã staged.