MƯỜI CHẶNG

Cuốn sổ lưu mọi bản nháp cũ

«web-truong-final-2-dùng-cái-này.html» — CLB Tin học từng có cả một đống file tên như vậy. Bài này kể vì sao đặt tên không phải là cách, và cuốn sổ nào mới thật sự nhớ được mọi phiên bản.

mỗi lớp mai là một phiên bản đã lưu
CHẶNG 1

Đống file tên «final-final-2-thật»

CLB Tin học đang cùng sửa trang web trường cho Hội chợ Khoa học.

Minh mở thư mục dùng chung trên máy tính phòng Tin, và thấy một cảnh tượng quen thuộc với ai từng làm việc nhóm:

Sáu cái tên, sáu file khác nhau. Và không một ai trong CLB — kể cả bạn viết ra file cuối cùng — còn nhớ chắc bản nào đang thật sự chạy trên mạng, bản nào là bản cũ nên xoá đi cho gọn.

Chưa từng để ý chuyện này?

Thử mở thư mục "Tài liệu" hay "Downloads" trên máy tính ở nhà — rất có thể em cũng có vài file tên kiểu «bai-van-2-sua-lai-that.docx». Không phải chỉ CLB Tin học mới bị vậy.

thư mục dùng chung web-truong.html web-truong-moi-2.html web-truong-final.html ...final-2-dùng-cái-này.html
Cùng một thư mục, sáu cái tên gần giống nhau — không cái nào tự nói được nó mới hơn cái nào.
CHẶNG 2

Bản tuần trước đang nằm ở đâu?

Rắc rối thật sự bắt đầu khi bản mới nhất bị lỗi.

Sáng thứ Hai, thầy Huy báo trang web trường bị lỗi hiển thị — chữ chồng lên nhau, ảnh Hội chợ Khoa học không hiện ra. CLB Tin học chắc chắn bản tuần trước vẫn chạy tốt, chỉ cần quay lại đúng bản đó là xong.

Vấn đề là: bản tuần trước là file nào trong sáu cái tên ở trên? Không ai dám chắc.

web-truong.html ...-moi-2.html ...-final-THẬT.html ...-2-dùng-cái-này.html ? bản nào là bản của tuần trước
Sáu file, sáu cái tên nghe "có vẻ mới nhất" — nhưng chẳng cái tên nào tự nói cho biết đúng thời điểm nó được lưu.
CHẶNG 3

Đặt tên kiểu nào cũng vẫn bí

Bống thử đề nghị: "Hay đặt tên có ngày tháng vào, kiểu web-truong-2026-08-20.html?"

Nghe hợp lý — nhưng thầy Huy hỏi lại một câu khiến cả nhóm khựng lại:

"Được, nhưng nếu hai bạn cùng sửa file trong cùng một ngày thì sao? Và nếu tháng sau lại cần quay về đúng bản của giờ chiều nay, chứ không phải nguyên cả ngày, thì tên file kiểu đó có đủ không?"

Cả nhóm im lặng. Đặt tên theo ngày tháng đỡ hơn "final-final-2" thật, nhưng vẫn chỉ là một cách chữa cháy — không giải quyết được gốc rễ: làm sao lưu mọi thời điểm thay đổi, của mọi người, mà không phải tự tay đặt tên và nhớ từng cái?

Câu hỏi mà cả nhóm dừng lại để nghĩ

Có công cụ nào tự làm việc "ghi lại mọi lần thay đổi" thay vì bắt con người phải tự đặt tên, tự nhớ không?

web-truong-2026-08-20.html ? hai bạn cùng sửa trong cùng một ngày thì sao?
Đặt tên theo ngày đỡ rối hơn "final-2" — nhưng vẫn không trả lời được câu hỏi của thầy Huy.
CHẶNG 4

À! Vấn đề không phải ở cách đặt tên

Vấn đề là đang dùng sai công cụ cho đúng việc.

Nếu đặt tên kiểu nào cũng không đủ, thì có cách nào để máy tự nhớ giùm mọi lần thay đổi, thay vì bắt con người tự ghi chú không?

Đặt tên file — dù khéo cỡ nào — vẫn là con người phải tự nhớ và tự ghi chú thủ công từng lần thay đổi. Việc đó, hoá ra, đã có sẵn một công cụ chuyên làm rất tốt.

Một công cụ tự động lưu lại mọi lần thay đổi, đúng thời điểm, đúng ai đã sửa gì — và cho phép quay lại bất kỳ mốc nào trong lịch sử đó, chỉ bằng một lệnh, không cần đoán tên file nào là đúng.

Không phải đặt tên file khéo hơn.
đừng dùng tên file
để làm việc của một cuốn sổ lịch sử.
Không phải một cái tên file khéo hơn — mà là một cuốn sổ biết tự ghi lại mọi mốc thời gian.
CHẶNG 5

Gọi tên nó: Git

Công cụ đó tên là Git.

GIT là một hệ thống quản lý phiên bản (version control) — nó ghi lại lịch sử thay đổi của một tập tin hay cả một dự án theo thời gian, không cần con người tự đặt tên "final-2-thật" nữa.

Mỗi lần ai đó lưu một thay đổi vào Git, gọi là một commit — giống một mốc trong cuốn nhật ký, ghi rõ thời điểm, ai làm, và thay đổi gì.

Thứ Hai Thứ Ba Thứ Tư hôm nay
Mỗi chấm là một commit — một mốc thay đổi được lưu lại, có thể quay về đúng mốc đó bất cứ lúc nào.
CHẶNG 6

Bản chất thật sự

Git không lưu nhiều bản sao file — nó lưu lại các lần thay đổi.

Khác với việc giữ hàng chục file trùng lặp kiểu "final-final-2", Git lưu từng lần thay đổi (commit) theo trình tự thời gian. Muốn xem bản của thứ Ba tuần trước? Chỉ cần quay về đúng commit đó — không cần tìm trong đống tên file.

Điểm mạnh nhất: nhiều người có thể cùng sửa một dự án song song mà không ghi đè mất công sức của nhau. Git giúp gộp (merge) các thay đổi của từng người lại một cách có kiểm soát — thay vì phải hỏi nhau qua nhóm chat "cậu sửa xong chưa, tớ gửi đè lên có được không".

CÁCH CŨ: ĐẶT TÊN FILE Con người phải tự nhớ, tự đặt tên, dễ nhầm, dễ ghi đè mất công sức người khác.
CÁCH GIT: LƯU LỊCH SỬ THAY ĐỔI Máy tự ghi lại mọi mốc, ai cũng quay lại được đúng thời điểm cần, gộp thay đổi có kiểm soát.
bài của Bống bài của Minh gộp lại bản chung, cả hai cùng thấy
Hai người sửa song song, rồi gộp lại có kiểm soát — không ai bị ghi đè mất công sức.
CHẶNG 7

Một ví dụ khác, gần hơn

Em có thể đã dùng một ý tưởng gần giống Git rồi, mà không biết.

Google Docs tự động lưu "lịch sử phiên bản" — cho phép mở lại đúng bài văn lúc 3 giờ chiều hôm qua, trước khi nó bị sửa hỏng bởi một cú gõ nhầm. Đó là một dạng ý tưởng quản lý phiên bản đơn giản, cùng tinh thần với Git, chỉ là nhỏ hơn và tự động hoàn toàn.

Google Docs "Lịch sử phiên bản" tự lưu theo thời gian mở lại bản cũ 1 cú bấm Git "Commit" lưu mỗi thay đổi nhiều người cùng sửa được gộp thay đổi có kiểm soát
Ý tưởng giống nhau ở gốc — chỉ khác quy mô và mức chủ động mà người dùng kiểm soát được.
CHẶNG 8

Nếu không có nó thì sao

Không có công cụ như Git, làm việc nhóm trên cùng một file rất dễ rối.

Không có Git, hai người cùng sửa chung một file rất dễ ghi đè mất công sức của nhau, hoặc phải gửi qua lại hàng chục bản file qua nhóm chat — không ai chắc bản nào là bản mới nhất, y hệt tình cảnh CLB Tin học ở đầu bài.

Với những dự án phần mềm có hàng trăm, hàng nghìn người cùng sửa (như trình duyệt, mạng xã hội), không có công cụ quản lý phiên bản thì gần như không thể làm việc nhóm được ở quy mô đó.

web-truong-final.html web-truong-final-MOI.html cái này mới đúng nè!! ?
Không có Git, nhóm chat trở thành nơi "lưu phiên bản" — và không ai còn chắc bản nào là bản đúng.
CHẶNG 9

Em đã gặp ý tưởng này ở đâu rồi

Trước khi qua chặng cuối, thử tự kiểm nhanh xem mình đã nắm được bản chất chưa.

Các dự án phần mềm lớn (app, game, website) hầu như đều dùng Git để nhiều lập trình viên cùng làm việc. Nút "hoàn tác" (undo) nhiều lần trong một phần mềm vẽ hay Word cũng mang tinh thần tương tự — lưu lại lịch sử để quay lại được.

Tự kiểm tra bản chất

Chọn một đáp án cho mỗi câu — không chấm điểm, chỉ để em tự biết mình đã hiểu đúng chưa.

1. Git chủ yếu lưu lại điều gì?

2. Vì sao đặt tên file kiểu "final-2-thật" không thật sự giải quyết được vấn đề?

3. Git giúp ích gì nhất khi nhiều người cùng sửa một dự án?

Câu hỏi của riêng em

Có điều gì về Git hay về việc lưu phiên bản mà em còn thắc mắc? Viết ra đây, không cần đúng/sai.

    Cuộn nốt xuống dưới nhé — sắp xong trang này rồi!

    CHẶNG 10

    Kể lại cho bạn trong 30 giây

    Nếu chỉ nhớ một câu, hãy nhớ câu này.

    Git là cuốn nhật ký của mọi bản nháp —
    không cần đặt tên file rối rắm
    để nhớ bản nào là bản đúng.

    Lần sau nhóm em làm việc chung một file mà không biết bản nào là bản mới nhất, thử kể lại câu chuyện "final-final-2-thật" của CLB Tin học — chắc chắn sẽ có người gật đầu lia lịa vì từng gặp y hệt.

    final.html final-2-thật.html một dòng lịch sử, không đống tên
    Từ một đống tên file rối rắm, sang một dòng lịch sử gọn gàng, mọi mốc đều quay lại được.