Bí kíp luyện Git cơ bản cho người mới (P1): Cài đặt và làm quen
Người bạn đồng hành trên con đường trở thành cao thủ Git
Chào mừng bạn đến với cuộc hành trình chinh phục Git. Nếu bạn đang ở đây, có lẽ bạn đã nghe nói về Git như một công cụ "thần thánh" mà mọi lập trình viên đều phải biết, hoặc có thể bạn đã từng trải qua những đêm dài mất ngủ vì lỡ tay xóa mất file quan trọng hay ghi đè lên công sức của đồng đội. Dù lý do là gì, bạn đã đến đúng nơi.
Cuốn "bí kíp" này không phải là một tài liệu tham khảo khô khan liệt kê hàng trăm câu lệnh. Thay vào đó, nó được viết dưới dạng một câu chuyện, một lộ trình tuyến tính sẽ dẫn dắt bạn đi từng bước, từ việc hiểu được "nỗi đau" mà Git sinh ra để giải quyết, cho đến việc sử dụng thành thạo những kỹ thuật phức tạp nhất. Chúng ta sẽ cùng nhau theo chân một lập trình viên tên Bình, chứng kiến những vấn đề anh gặp phải và khám phá cách Git, với triết lý và công cụ của mình, trở thành người hùng giải quyết những vấn đề đó.
Mỗi chương đều được xây dựng theo một cấu trúc nhất quán:
-
Vấn đề: Một tình huống thực tế, một "nỗi đau" mà bạn có thể đã, đang hoặc sẽ gặp phải.
-
Giải pháp của Git: Cách Git giải quyết vấn đề đó một cách thông minh và hiệu quả, được giải thích qua những phép ẩn dụ đơn giản, dễ hiểu.
-
Câu chuyện & Thực hành: Chúng ta sẽ quay lại với câu chuyện của Bình và áp dụng ngay những gì vừa học vào thực tế thông qua các bài tập cụ thể.
Hãy chuẩn bị một tinh thần thoải mái, một trình soạn thảo văn bản, và một cửa sổ dòng lệnh. Cuộc phiêu lưu của chúng ta bắt đầu ngay bây giờ.
Chương I: Cuộc Hành trình Bắt đầu - Tại sao Git là Người hùng Thầm lặng
Trước khi học cách sử dụng Git, chúng ta cần hiểu tại sao nó lại tồn tại. Phần này sẽ không dạy bạn bất kỳ câu lệnh nào. Thay vào đó, nó sẽ xây dựng nền tảng tư duy, giúp bạn thấu hiểu sâu sắc những vấn đề cố hữu trong quá trình làm việc sáng tạo và cách Git trở thành giải pháp không thể thiếu. Khi bạn hiểu được "nỗi đau", bạn sẽ có động lực mạnh mẽ hơn để học cách "chữa lành".
Vấn đề: Sự Hỗn Loạn Của Việc "Lưu Nhầm Tên"
Hãy bắt đầu với một câu chuyện. An, một sinh viên thiết kế web tài năng, và Bình, một lập trình viên mới vào nghề, hợp tác làm một dự án website nhỏ cho câu lạc bộ trong trường. Họ rất hào hứng, nhưng nhanh chóng nhận ra công việc không đơn giản như họ nghĩ. Sự hỗn loạn bắt đầu len lỏi vào quy trình làm việc của họ.
-
Cơn ác mộng mang tên phiên bản: Chỉ sau vài ngày, thư mục dự án của họ trông như một bãi chiến trường. Nó chứa đầy các file như
index.html,index_final.html,index_final_v2.html, vàindex_final_for_real_this_time.html. Mỗi khi cần chỉnh sửa, họ lại tạo một bản sao mới vì sợ làm hỏng file cũ. Chẳng mấy chốc, không ai còn chắc chắn file nào là phiên bản mới nhất, file nào chứa những thay đổi đã được duyệt. -
Ghi đè công việc của nhau: Một buổi chiều, An gửi cho Bình file
style.cssvới giao diện mới. Cùng lúc đó, Bình đang chỉnh sửa trên phiên bản cũ của filestyle.cssđể sửa một lỗi hiển thị nhỏ. Sau khi sửa xong, anh lưu lại và vô tình ghi đè lên toàn bộ công sức thiết kế của An. Cả hai đã mất hàng giờ đồng hồ để tìm lại và kết hợp các thay đổi. Đây là một ví dụ điển hình về "sự xuống cấp ngẫu nhiên do lỗi của con người và những hậu quả không lường trước". -
Mất mát không thể phục hồi: Bình có một ý tưởng táo bạo để thay đổi hoàn toàn bố cục trang web. Anh dành cả buổi tối để thử nghiệm. Kết quả là... một thảm họa. Giao diện vỡ nát. Tệ hơn nữa, anh không có cách nào dễ dàng để quay lại trạng thái "trước khi thử nghiệm". Anh ước gì máy tính có một nút "undo" cho cả thư mục dự án, một nút "undo" cực mạnh.
-
Thiếu minh bạch và trách nhiệm: Một lỗi lạ xuất hiện trên trang chủ. An nói rằng cô không hề động đến file đó. Bình cũng chắc chắn như vậy. Họ không có cách nào để biết ai đã thực hiện thay đổi, thay đổi đó là gì, khi nào nó được thực hiện, và quan trọng nhất là tại sao nó lại được thực hiện. Việc sửa lỗi trở thành một cuộc điều tra mò mẫm, đầy phỏng đoán và hy vọng.
-
Tri thức bị "nhốt": Chỉ có Bình nhớ chính xác các bước để tải website lên server của trường. Một tuần trước ngày ra mắt, Bình bị ốm. An có toàn bộ code mới nhất nhưng không biết làm thế nào để cập nhật trang web. Dự án bị đình trệ hoàn toàn. Đây là vấn đề kinh điển khi những thông tin quan trọng bị "nhốt trong đầu một cá nhân", người có thể biến mất bất cứ lúc nào.
Những vấn đề mà An và Bình gặp phải không phải là cá biệt. Chúng là những thách thức cố hữu mà bất kỳ ai, từ nhà văn, nhà thiết kế, đến lập trình viên, đều phải đối mặt khi làm việc trên các dự án kỹ thuật số. Việc không có một hệ thống quản lý phiên bản chuyên nghiệp sẽ gây lãng phí hàng giờ, thậm chí hàng tuần làm việc, và tiềm ẩn những rủi ro thảm khốc cho dự án.

Sự hỗn loạn khi làm việc nhóm
Giải pháp của Git: Cỗ Máy Thời Gian Cho Mã Nguồn
Để giải quyết những vấn đề trên, các nhà phát triển phần mềm đã tạo ra một loại công cụ gọi là Hệ thống Quản lý Phiên bản (Version Control System - VCS). Bạn có thể hình dung VCS như một "cỗ máy thời gian" cho dự án của mình. Nó giống như chức năng "lưu trạng thái" (save states) trong các trò chơi điện tử. Mỗi khi bạn thực hiện một loạt thay đổi quan trọng, bạn có thể tạo một "điểm lưu" (snapshot). Hệ thống sẽ ghi lại chính xác những gì đã thay đổi, ai đã thay đổi, khi nào, và đi kèm một ghi chú giải thích lý do tại sao. Nếu có sự cố xảy ra, bạn có thể dễ dàng quay trở lại bất kỳ "điểm lưu" nào trong quá khứ.
Có nhiều loại VCS, nhưng chúng chủ yếu được chia thành hai loại: Tập trung (Centralized) và Phân tán (Distributed). Git thuộc loại thứ hai, và đây chính là điểm làm nên sức mạnh vượt trội của nó.
-
Hệ thống Tập trung (Centralized VCS): Hãy tưởng tượng có một máy chủ trung tâm chứa toàn bộ lịch sử của dự án. Mọi người sẽ kết nối vào máy chủ này để lấy phiên bản mới nhất và lưu các thay đổi của mình lên đó. Mô hình này có nhược điểm lớn: nếu máy chủ trung tâm gặp sự cố, toàn bộ lịch sử dự án có thể gặp nguy hiểm. Hơn nữa, bạn luôn cần kết nối mạng để thực hiện hầu hết các thao tác.
-
Hệ thống Phân tán (Distributed VCS - DVCS), tức là Git: Đây là một cuộc cách mạng. Thay vì chỉ có một bản sao lịch sử đầy đủ trên máy chủ trung tâm, với DVCS, mỗi người tham gia dự án đều có một bản sao đầy đủ của toàn bộ lịch sử dự án trên máy tính của mình. Bản sao này được gọi là kho chứa cục bộ (local repository). Điều này mang lại những lợi ích to lớn:
-
An toàn và Tin cậy: Mỗi máy tính của thành viên trong nhóm đều hoạt động như một bản sao lưu đầy đủ. Nếu máy chủ chính (ví dụ như một dịch vụ hosting tên là GitHub) bị sập, lịch sử dự án vẫn an toàn tuyệt đối trên máy của mọi người. Không có một "điểm lỗi duy nhất" (single point of failure) nào.
-
Tốc độ Chóng mặt: Hầu hết các thao tác bạn thực hiện hàng ngày—như lưu một thay đổi, xem lại lịch sử, so sánh các phiên bản—đều diễn ra trên máy tính của bạn (local). Chúng không cần giao tiếp với máy chủ từ xa, do đó tốc độ cực kỳ nhanh.
-
Làm việc Ngoại tuyến (Offline): Bạn có thể làm việc hiệu quả ở bất cứ đâu: trên máy bay, ở một quán cà phê không có Wi-Fi, hay khi mạng internet bị đứt. Bạn có thể tạo các "điểm lưu" (gọi là commit trong Git) một cách hoàn toàn độc lập. Chỉ khi nào bạn sẵn sàng chia sẻ công việc của mình với người khác, bạn mới cần kết nối mạng.
-
Việc áp dụng Git không chỉ đơn thuần là cài đặt một phần mềm. Nó là việc áp dụng một quy trình làm việc có cấu trúc, một phương pháp giao tiếp hiệu quả cho cả nhóm. Khi một lập trình viên thực hiện một commit, họ không chỉ lưu lại mã nguồn. Một commit tốt sẽ đi kèm với một thông điệp giải thích rõ ràng tại sao thay đổi đó lại cần thiết. Lịch sử commit của dự án trở thành một cuốn nhật ký chi tiết, một nguồn chân lý duy nhất, giúp mọi người hiểu được quá trình phát triển của dự án mà không cần phải dựa vào trí nhớ hay những cuộc họp không cần thiết.
Trong thế giới phát triển phần mềm hiện đại, việc thành thạo Git không còn là một lựa chọn, mà đã trở thành một tiêu chuẩn nghề nghiệp. Việc một lập trình viên chuyên nghiệp làm việc mà không sử dụng bất kỳ hình thức quản lý phiên bản nào được coi là "không thể bào chữa". Nó không chỉ là một thiếu sót về kỹ năng, mà còn cho thấy sự thiếu tiếp cận với các phương pháp làm việc hiện đại, có kỷ luật và hiệu quả. Đối với các công ty, việc sử dụng Git giúp họ thu hút và giữ chân những tài năng tốt nhất, bởi vì các lập trình viên giỏi luôn mong muốn làm việc trong một môi trường chuyên nghiệp và có quy trình rõ ràng.

Git có nhiều ưu điểm vượt trội so với SVN
Thực hành: Bài tập tư duy
Phần này không có lệnh để gõ. Thay vào đó, hãy dành vài phút để suy ngẫm.
Hãy nghĩ về một dự án bạn đã từng làm, có thể là một bài tập lớn ở trường, một dự án cá nhân, hoặc thậm chí là một bài luận văn.
-
Bạn đã quản lý các phiên bản khác nhau của nó như thế nào? Bạn có tạo ra các file với tên gọi
final,final_v2không? -
Bạn đã bao giờ vô tình xóa hoặc ghi đè lên một phần công việc quan trọng chưa? Cảm giác lúc đó thế nào?
-
Khi làm việc nhóm, bạn và đồng đội đã trao đổi các thay đổi cho nhau bằng cách nào? (Gửi qua email, Zalo, Google Drive?) Các bạn có bao giờ gặp phải tình trạng "tam sao thất bản" hay làm việc trên các phiên bản khác nhau không?
Hãy viết ra ba "nỗi đau" lớn nhất bạn đã gặp phải. Đây chính là những lý do quan trọng nhất để bạn bắt đầu cuộc hành trình học Git này.
Chương II: Trang bị Vũ khí - Cài đặt và Cấu hình Git
Sau khi hiểu rõ "tại sao", giờ là lúc chúng ta đến với "làm thế nào". Phần này sẽ hướng dẫn bạn từng bước để cài đặt thành công Git trên máy tính và thực hiện các cấu hình cơ bản đầu tiên. Đây là bước chuẩn bị nền tảng, đảm bảo Git sẵn sàng hoạt động cho tất cả các phần sau.
Vấn đề: Chiếc Máy Tính "Trần Trụi"
Bình đã hoàn toàn bị thuyết phục bởi sức mạnh của Git. Anh ấy muốn áp dụng nó ngay cho dự án của mình. Nhưng có một vấn đề: máy tính của anh ấy chưa có Git. Giống như một hiệp sĩ không thể ra trận mà không có gươm, Bình cần "trang bị" Git cho cỗ máy của mình.
Hơn nữa, sau khi có gươm, anh ấy cần "khắc tên" mình lên đó. Tại sao? Bởi vì trong thế giới Git, mỗi thay đổi đều được ghi danh. Khi anh ấy lưu một "snapshot", Git cần biết ai là tác giả của nó. Nếu không khai báo danh tính, Git sẽ không biết ghi công cho ai, và quan trọng hơn, các thành viên khác trong nhóm cũng không biết ai đã thực hiện thay đổi đó.
Giải pháp của Git: Cài đặt và Khai báo Danh tính
Quy trình trang bị vũ khí Git gồm hai bước chính: cài đặt và cấu hình.
Bước 1: Cài đặt Git
Git là một công cụ đa nền tảng, được thiết kế để hoạt động trơn tru trên hầu hết các hệ điều hành. Sự đa dạng trong cách cài đặt này phản ánh triết lý của Git: nó được sinh ra để phục vụ cho dự án mã nguồn mở Linux, nơi các nhà phát triển sử dụng vô số loại máy tính và hệ điều hành khác nhau. Dưới đây là hướng dẫn chi tiết cho các hệ điều hành phổ biến nhất.
Đối với Windows:
-
Tải về: Truy cập trang web chính thức của Git tại git-scm.com. Trang web sẽ tự động phát hiện bạn đang dùng Windows và đề xuất phiên bản phù hợp để tải về.
-
Chạy trình cài đặt: Mở file vừa tải về. Bạn sẽ thấy một trình hướng dẫn cài đặt (Setup Wizard).
-
Các tùy chọn quan trọng: Hầu hết các tùy chọn mặc định đều hợp lý cho người mới bắt đầu. Tuy nhiên, hãy chú ý đến một vài điểm:
-
Chọn Editor mặc định: Git sẽ yêu cầu bạn chọn một trình soạn thảo văn bản mặc định (như Vim, Notepad++, VS Code). Trình soạn thảo này sẽ được mở ra khi Git cần bạn nhập thông tin dài, ví dụ như thông điệp cho một
commit. Hãy chọn cái mà bạn quen thuộc nhất. -
Adjusting your PATH environment: Hãy chọn tùy chọn được đề xuất: "Git from the command line and also from 3rd-party software". Điều này cho phép bạn sử dụng lệnh
gittừ cả Command Prompt của Windows và các công cụ khác. -
Terminal emulator: Lựa chọn "Use Git Bash only" hoặc "Use MinTTY (the default terminal of MSYS2)" là lựa chọn an toàn và phổ biến nhất. Nó cung cấp cho bạn một môi trường dòng lệnh mạnh mẽ giống Linux ngay trên Windows.
-
-
Hoàn tất: Nhấn "Next" qua các bước còn lại và cuối cùng là "Install".
Đối với macOS:
macOS thường đi kèm với một phiên bản Git cũ. Cách tốt nhất là cài đặt phiên bản mới nhất.
-
Cách dễ nhất (Trình cài đặt):
-
Tru cập git-scm.com và tải về trình cài đặt cho macOS.
-
Chạy file
.dmgvà làm theo hướng dẫn. Đây là cách đơn giản nhất.
-
-
Cách được khuyến khích (Homebrew): Homebrew là một trình quản lý gói phổ biến cho macOS. Nếu bạn đã cài đặt Homebrew, chỉ cần mở ứng dụng Terminal và gõ:
Bash
brew install gitHomebrew sẽ tự động tải và cài đặt phiên bản Git mới nhất cho bạn.
Đối với Linux (Bản phân phối Debian/Ubuntu):
Git có thể được cài đặt dễ dàng thông qua trình quản lý gói của hệ thống.
-
Cập nhật danh sách gói: Mở Terminal và chạy lệnh sau để đảm bảo bạn có thông tin mới nhất về các gói phần mềm:
Bash
sudo apt-get update -
Cài đặt Git: Chạy lệnh sau để cài đặt Git:
Bash
sudo apt-get install gitHoặc
sudo apt-get install git-allđể có bộ công cụ đầy đủ hơn.
Kiểm tra cài đặt: Sau khi hoàn tất, hãy mở Terminal (hoặc Git Bash trên Windows) và gõ lệnh sau:
Bash
git --version
Nếu bạn thấy một dòng chữ hiện ra, ví dụ như git version 2.43.0, xin chúc mừng, bạn đã cài đặt Git thành công!
Bước 2: Cấu hình Danh tính (Khai báo Tên và Email)
Đây là bước cực kỳ quan trọng. Bạn cần cho Git biết bạn là ai. Mỗi khi bạn thực hiện một commit, thông tin này sẽ được ghi lại vĩnh viễn trong lịch sử của dự án. Điều này giúp mọi người biết ai là tác giả của từng thay đổi.
Chúng ta sẽ sử dụng lệnh git config với cờ --global. Cờ này có nghĩa là thiết lập sẽ được áp dụng cho tất cả các dự án Git trên máy tính của bạn.
Mở Terminal (hoặc Git Bash) và chạy hai lệnh sau, thay thế "Your Name" và "youremail@example.com" bằng tên và địa chỉ email thật của bạn.
Bash
git config --global user.name "Nguyen Van Binh"
git config --global user.email "binh.nguyen@email.com"
Lưu ý: Hãy sử dụng cùng một email mà bạn dự định sẽ dùng để đăng ký trên các dịch vụ hosting như GitHub hoặc GitLab sau này. Điều này sẽ giúp các dịch vụ đó nhận diện và liên kết các commit của bạn với tài khoản của bạn một cách chính xác.
Để kiểm tra lại các cấu hình bạn vừa thiết lập, bạn có thể dùng lệnh:
Bash
git config --list
Bạn sẽ thấy một danh sách các cấu hình, trong đó có user.name và user.email mà bạn vừa đặt.
Thực hành: Trang bị và Định danh
Bây giờ đến lượt bạn. Hãy thực hiện chính xác các bước sau:
-
Cài đặt: Dựa theo hướng dẫn cho hệ điều hành của bạn ở trên, hãy cài đặt Git.
-
Kiểm tra: Mở Terminal (hoặc Git Bash). Gõ
git --versionvà nhấn Enter. Đảm bảo bạn nhận được kết quả là một phiên bản Git. -
Cấu hình: Gõ hai lệnh sau, thay thế bằng thông tin cá nhân của bạn:
Bash
git config --global user.name "Tên Của Bạn" git config --global user.email "email.cua.ban@example.com" -
Xác nhận: Gõ
git config --listđể xem lại các thiết lập. Tìm dònguser.namevàuser.emailđể chắc chắn rằng chúng đã được thiết lập chính xác.
Nếu bạn hoàn thành tất cả các bước trên, bạn đã sẵn sàng cho cuộc chiến. Thanh gươm Git đã được trang bị, và tên của bạn đã được khắc lên đó. Hãy cùng tiến vào xưởng rèn để bắt đầu luyện tập những đường gươm đầu tiên.
Chương III: Xưởng Rèn Luyện Cá Nhân - Làm việc với Kho chứa Local
Đây là lúc chúng ta bắt đầu "vung gươm". Trong phần này, bạn sẽ học và thực hành thành thạo quy trình làm việc cơ bản nhất và quan trọng nhất trong Git. Chúng ta sẽ tìm hiểu về "Ba Khu Vực Thần Kỳ" của Git, nơi mọi phép màu xảy ra. Nắm vững khái niệm này là nền tảng vững chắc cho mọi kỹ thuật nâng cao sau này.
Vấn đề: Quy trình Lưu trữ có Chủ đích
Bình đã có Git. Anh tạo một thư mục mới trên máy tính tên là my-awesome-project để bắt đầu dự án. Câu hỏi đầu tiên nảy ra trong đầu anh là: "Làm thế nào để nói với Git rằng: 'Này Git, hãy bắt đầu bảo vệ và theo dõi thư mục này đi'?"
Sau đó, khi anh viết được vài dòng code đầu tiên, anh muốn tạo một "điểm lưu" (checkpoint) an toàn. Nhưng anh không muốn Git tự động lưu mọi thứ anh gõ. Anh muốn có quyền kiểm soát. Ví dụ, anh sửa 3 file: một file HTML, một file CSS, và một file JavaScript. Nhưng anh chỉ mới hoàn thành xong phần HTML và muốn tạo một điểm lưu chỉ cho file HTML đó thôi. Hai file kia vẫn còn đang dang dở. Anh cần một quy trình cho phép anh chủ động lựa chọn cái gì sẽ được lưu trong mỗi lần, để mỗi điểm lưu đều có ý nghĩa và gọn gàng.
Giải pháp của Git: Ba Khu Vực Thần Kỳ
Để giải quyết vấn đề này, Git giới thiệu một mô hình làm việc độc đáo với ba khu vực, hay ba trạng thái chính. Hãy tưởng tượng bạn là một đầu bếp đang chuẩn bị một bữa tiệc thịnh soạn.
-
Working Directory (Nhà bếp): Đây là nơi bạn làm việc, là thư mục dự án trên máy tính của bạn. Bạn có thể tự do chỉnh sửa file, thêm file mới, xóa file cũ. Mọi thứ ở đây đều đang trong quá trình "chế biến", có thể còn lộn xộn và chưa hoàn chỉnh. Git biết những gì đang xảy ra ở đây, nhưng nó chỉ quan sát chứ chưa lưu lại chính thức.
-
Staging Area (hay Index - Đĩa Trưng bày): Đây là khu vực chuẩn bị, là điểm khác biệt lớn nhất của Git so với nhiều VCS khác. Sau khi bạn hoàn thành một "món ăn" (ví dụ: hoàn thành xong file HTML), bạn sẽ cẩn thận đặt nó lên "đĩa trưng bày". Staging Area là nơi bạn tập hợp những thay đổi mà bạn muốn đưa vào "điểm lưu" tiếp theo. Nó cho phép bạn lựa chọn chính xác những gì sẽ được commit, giúp bạn tạo ra những
commitcó chủ đích, sạch sẽ và chỉ chứa những thay đổi liên quan đến một nhiệm vụ duy nhất. -
Repository (.git directory - Sổ Công thức): Khi bạn đã hài lòng với tất cả các món trên "đĩa trưng bày", bạn sẽ chụp một bức ảnh của chúng và ghi lại công thức vào cuốn sổ bí mật của mình. Đây chính là kho chứa
.gitcủa bạn. Một khi đã được ghi vào đây (thông qua mộtcommit), "snapshot" (ảnh chụp nhanh) đó của dự án sẽ được lưu trữ an toàn và trở thành một phần của lịch sử. Bạn có thể quay lại "snapshot" này bất cứ lúc nào.
Mô hình ba khu vực này chính là trái tim của triết lý "Atomic Commits" (Commit nguyên tử) của Git. Thay vì tạo ra những commit khổng lồ chứa hàng tá thay đổi không liên quan, Staging Area khuyến khích bạn tạo ra những commit nhỏ, tập trung, mỗi commit chỉ giải quyết một vấn đề duy nhất. Điều này làm cho lịch sử dự án trở nên cực kỳ dễ đọc, dễ hiểu, và việc tìm ra nguồn gốc của một lỗi sau này trở nên đơn giản hơn rất nhiều.

Hình dung mô hình ba khu vực của Git
Các Lệnh Cơ bản để Di chuyển Giữa các Khu vực
Bây giờ, hãy học những câu thần chú để di chuyển các thay đổi của bạn qua ba khu vực này.
-
git init: Đây là lệnh đầu tiên bạn dùng cho một dự án mới. Nó giống như việc "thánh hóa" nhà bếp của bạn. Lệnh này tạo ra một thư mục ẩn có tên là.gitbên trong thư mục dự án của bạn. Thư mục.gitnày chính là "Repository" - nơi chứa toàn bộ lịch sử, cấu hình và mọi thứ liên quan đến Git cho dự án đó. -
git add <tên-file>: Lệnh này dùng để "bày món ăn lên đĩa". Nó lấy những thay đổi của một file cụ thể từ Working Directory và đưa nó vào Staging Area, sẵn sàng cho lầncommittiếp theo. Bạn cũng có thể dùnggit add.để đưa tất cả các file đã thay đổi vào Staging Area. -
git commit -m "Một thông điệp ý nghĩa": Đây là hành động "ghi công thức vào sổ". Nó lấy tất cả những gì đang có trong Staging Area, tạo ra một "snapshot" vĩnh viễn và lưu nó vào Repository. Cờ-m(viết tắt của message) cho phép bạn đính kèm một thông điệp mô tả ngắn gọn về những gì bạn đã làm trongcommitnày. Một thông điệpcommittốt là cực kỳ quan trọng!.
Các Lệnh Kiểm tra Trạng thái
Trong xưởng rèn, bạn cần những công cụ để kiểm tra công việc của mình.
-
git status: Đây là người trợ lý đắc lực nhất của bạn. Bất cứ lúc nào bạn không chắc chắn về tình trạng dự án, hãy gõgit status. Nó sẽ cho bạn biết chính xác:-
Những file nào trong Working Directory đã bị thay đổi nhưng chưa được đưa vào Staging Area (
Changes not staged for commit). -
Những file nào là file mới mà Git chưa từng theo dõi (
Untracked files). -
Những file nào đã sẵn sàng trong Staging Area và đang chờ được
commit(Changes to be committed). Nên tạo thói quen sử dụnggit statusthường xuyên.
-
-
git log: Lệnh này cho phép bạn mở "cuốn sổ công thức" ra và xem lại toàn bộ lịch sử cáccommitđã được tạo. Bạn sẽ thấy mã định danh (hash) của mỗicommit, tác giả, ngày tháng và thông điệpcommit.
Thực hành: Commit Đầu tiên
Hãy cùng Bình thực hiện những đường gươm đầu tiên. Mở Terminal hoặc Git Bash của bạn và làm theo từng bước.
-
Tạo và di chuyển vào thư mục dự án:
Bash
mkdir learning-git cd learning-git -
Khởi tạo kho chứa Git:
Bash
git initBạn sẽ thấy một thông báo như:
Initialized empty Git repository in /path/to/your/project/learning-git/.git/. "Nhà bếp" của bạn đã sẵn sàng. -
Tạo một file mới: Tạo một file tên là
story.txtvà viết vào đó dòng chữ:Ngày xửa ngày xưa, có một lập trình viên... -
Kiểm tra trạng thái:
Bash
git statusGit sẽ báo cho bạn biết có một "Untracked file" tên là
story.txt. Điều này có nghĩa là Git thấy file này trong "nhà bếp" nhưng chưa được lệnh phải theo dõi nó. -
Đưa file vào Staging Area:
Bash
git add story.txtĐây là hành động bạn nói với Git: "Hãy bắt đầu theo dõi file này và chuẩn bị nó cho lần lưu tới."
-
Kiểm tra lại trạng thái:
Bash
git statusBây giờ, Git sẽ báo rằng có một file trong mục
Changes to be committed. Filestory.txtđã được đặt lên "đĩa trưng bày". -
Lưu vào Repository (Commit):
Bash
git commit -m "Start writing the first chapter"Bạn vừa tạo ra "snapshot" đầu tiên trong lịch sử dự án của mình. Thông điệp
commitmô tả rõ ràng rằng đây là lúc bắt đầu chương đầu tiên. -
Kiểm tra trạng thái lần cuối:
Bash
git statusGit sẽ báo
nothing to commit, working tree clean. "Nhà bếp" và "đĩa trưng bày" của bạn đều đã sạch sẽ. Mọi thứ đã được ghi vào "sổ công thức". -
Xem lại lịch sử:
Bash
git logBạn sẽ thấy
commitđầu tiên của mình, với mã hash, tên tác giả (mà bạn đã cấu hình ở Phần II), ngày tháng và thông điệp bạn vừa viết.
Chúc mừng! Bạn đã hoàn thành quy trình làm việc cơ bản nhất của Git. Hãy lặp lại các bước 3-7 nhiều lần để cảm nhận sự trôi chảy của quy trình: Chỉnh sửa -> add -> commit.
Lời kết
Chúc mừng! Bạn đã hoàn thành 3 chương đầu của cuốn "Bí kíp Luyện Git". Hãy cùng nhìn lại những gì chúng ta đã đạt được:
Chương I - Cuộc Hành trình Bắt đầu: Bạn đã hiểu được "nỗi đau" mà Git sinh ra để giải quyết. Từ những cơn ác mộng về phiên bản hỗn loạn, ghi đè công việc của nhau, đến việc mất mát không thể phục hồi - bạn đã thấu hiểu tại sao Git không chỉ là một công cụ, mà là một phương pháp làm việc có kỷ luật và hiệu quả.
Chương II - Trang bị Vũ khí: Bạn đã thành công cài đặt Git trên máy tính và khai báo danh tính của mình. Giờ đây, mỗi commit bạn tạo sẽ mang tên và email của bạn, tạo nên một lịch sử rõ ràng và có trách nhiệm.
Chương III - Xưởng Rèn Luyện Cá nhân: Đây là bước đột phá quan trọng nhất. Bạn đã nắm vững "Ba Khu Vực Thần Kỳ" của Git - Working Directory, Staging Area, và Repository. Bạn đã thực hành thành thạo quy trình cơ bản: Chỉnh sửa -> add -> commit.
Trong các chương tiếp theo, chúng ta sẽ khám phá những kỹ thuật nâng cao hơn như branching, merging, và làm việc với remote repositories.
Bạn đã xây dựng được một nền tảng vững chắc. Giờ đây, bạn không còn là người mới bắt đầu nữa. Bạn đã trở thành một lập trình viên có ý thức về việc quản lý mã nguồn một cách chuyên nghiệp. Hãy tiếp tục hành trình này với sự tự tin và tò mò. Con đường phía trước sẽ đầy thú vị và bổ ích!
End of Article