Mục Lục
Giới thiệu
Khi làm việc với Git, mỗi commit không chỉ lưu lại các thay đổi của bạn so với phiên bản trước đó mà còn lưu trữ một “snapshot” của toàn bộ thư mục làm việc tại thời điểm commit được tạo ra. Để hiểu rõ hơn về khái niệm này, hãy xem xét từng chi tiết.
Snapshot trong Git là gì?
- Snapshot (ảnh chụp nhanh): Trong ngữ cảnh của Git, một snapshot là một bản sao của trạng thái toàn bộ tệp tin trong thư mục làm việc vào thời điểm bạn tạo commit. Thay vì chỉ lưu trữ các sự khác biệt (diff) giữa các phiên bản như một số hệ thống quản lý phiên bản khác, Git lưu trữ snapshot của tất cả các tệp mà nó theo dõi.
- Tệp không thay đổi: Nếu một tệp không thay đổi giữa các commit, Git không sao chép lại tệp đó. Thay vào đó, Git lưu trữ một tham chiếu đến phiên bản trước đó của tệp. Điều này giúp tiết kiệm không gian lưu trữ và tăng tốc độ.
- Tệp đã thay đổi: Nếu một tệp thay đổi, Git lưu trữ một bản sao mới của tệp đó trong snapshot mới. Điều này cho phép Git có thể khôi phục lại toàn bộ trạng thái của dự án vào bất kỳ thời điểm nào bằng cách sử dụng các snapshot của commit.
Ví dụ về Snapshot trong Git
Giả sử bạn có một dự án với ba tệp: file1.txt, file2.txt, và file3.txt.
Commit đầu tiên: Bạn tạo commit đầu tiên khi tất cả các tệp đều có nội dung ban đầu. Git sẽ lưu lại snapshot của cả ba tệp này.
Commit A:
- file1.txt
- file2.txt
- file3.txtCommit thứ hai: Bạn thay đổi nội dung của file2.txt và tạo commit thứ hai. Git sẽ lưu lại snapshot của tất cả các tệp, nhưng chỉ tạo một bản sao mới của file2.txt. Các tệp file1.txt và file3.txt vẫn giữ nguyên từ commit trước đó và chỉ được tham chiếu.
Commit B:
- file1.txt (tham chiếu từ Commit A)
- file2.txt (phiên bản mới)
- file3.txt (tham chiếu từ Commit A)Commit thứ ba: Bạn thay đổi cả file1.txt và file3.txt, sau đó tạo commit thứ ba. Git sẽ tạo snapshot với các bản sao mới của file1.txt và file3.txt, trong khi file2.txt được tham chiếu từ commit trước.
Commit C:
- file1.txt (phiên bản mới)
- file2.txt (tham chiếu từ Commit B)
- file3.txt (phiên bản mới)Tại sao Snapshot quan trọng?
- Khả năng khôi phục: Do Git lưu trữ snapshot của toàn bộ dự án trong mỗi commit, bạn có thể dễ dàng khôi phục lại trạng thái của dự án tại bất kỳ commit nào mà không cần phải lo lắng về việc thiếu các tệp hoặc thông tin cần thiết.
- Lịch sử thay đổi rõ ràng: Mỗi commit ghi lại chính xác trạng thái của toàn bộ dự án tại thời điểm commit đó, giúp bạn dễ dàng theo dõi lịch sử thay đổi của dự án.
- Tối ưu hóa không gian lưu trữ: Bằng cách chỉ tạo các bản sao mới khi tệp thay đổi, Git tối ưu hóa không gian lưu trữ và đảm bảo rằng chỉ những thông tin cần thiết mới được lưu lại.
Tóm tắt
Mỗi commit trong Git chứa một snapshot của toàn bộ trạng thái dự án, bao gồm tất cả các tệp tin mà Git đang theo dõi. Snapshot này cho phép bạn khôi phục lại dự án về bất kỳ thời điểm nào, theo dõi lịch sử thay đổi, và đảm bảo rằng tất cả các thông tin quan trọng được lưu trữ một cách hiệu quả.
👋 Xin chào,
99,99% nội dung trên website này là nhờ hỏi ChatGPT, rồi mình biên tập lại để dễ hiểu và dùng lâu dài. Một vài bài tự viết, còn lại là “làm việc nhóm với AI” 😄
Mình lưu tại đây để tra cứu, học tập và chia sẻ với bạn bè. Nếu bạn tìm được gì hữu ích, cứ đọc thoải mái – miễn phí, không quảng cáo.
📱 Mình cũng có vài app cá nhân:
QuestionBank – Ôn thi vào 10 (iOS, Android)
TypingTest by QuestionBank (iOS, Android)
Cảm ơn bạn đã ghé qua!