Cài đặt Git

Xem thử

Vấn đề cần giải quyết

Bạn vừa nhận một máy mới, mở terminal gõ git --version và thấy command not found. Sau khi cài xong, bạn commit lần đầu thì Git từ chối với thông báo "Author identity unknown". Hai lỗi này đều là bước chuẩn bị bị bỏ sót: cài Git và khai báo danh tính.

Sau bài này, bạn có thể

  • Cài Git trên macOS, Windows hoặc Linux và kiểm tra bằng git --version.
  • Khai báo tên, email và nhánh mặc định bằng git config --global.
  • Giải thích vì sao thiếu danh tính thì không commit được.

Cài đặt theo hệ điều hành

Hệ điều hànhCách càiGhi chú
macOSbrew install gitmacOS thường kèm sẵn qua Command Line Tools; kiểm tra bằng git --version trước
WindowsBộ cài Git for Windows từ trang chính thứcKèm Git Bash, terminal giả lập Unix
Debian, Ubuntusudo apt update && sudo apt install git
Fedora, RHELsudo dnf install git

Cách cài khác nhau, cách kiểm tra giống nhau: chạy git --version và thấy số phiên bản.

Cấu hình lần đầu

Ngay sau khi cài, khai báo danh tính. Thông tin này gắn vào mọi commit bạn tạo:

bash
git config --global user.name "Nguyen Van A"
git config --global user.email "a.nguyen@example.com"
git config --global init.defaultBranch main

Thử và quan sát: từ máy trống tới commit đầu tiên

Hãy dự đoán: nếu bạn chạy git commit khi chưa khai báo user.name và user.email, Git sẽ làm gì? Chạy mô phỏng, rồi bấm nút biến thể để kiểm chứng.

Đang tải Animation…

Bảng bước (bản đọc tĩnh của mô phỏng)

BướcLệnhĐiều xảy ra
1git --versionMáy chưa cài Git nên shell báo không tìm thấy lệnh.
2sudo apt install gitCài Git bằng trình quản lý gói (macOS dùng brew, Windows dùng Git for Windows).
3git --versionLệnh in ra số phiên bản: Git đã sẵn sàng.
4git config --global user.name "Nguyen Van A"Khai báo tên. Giá trị được ghi vào tệp cấu hình của người dùng.
5git config --global user.email "a.nguyen@example.com"Khai báo email, cũng ghi vào cùng tệp cấu hình.
6git config --global init.defaultBranch mainChọn main làm tên nhánh đầu tiên của mọi kho mới.
7git init demo && cd demoTạo kho mới. Nhánh ban đầu lấy tên từ cấu hình.
8git commit --allow-empty -m "Commit đầu tiên"Commit mang tên và email đã cấu hình. HEAD trỏ vào nhánh main.

Biến thể: Quên khai báo danh tính

BướcLệnhĐiều xảy ra
1git init demo && cd demoTạo kho mới trên một máy chưa cấu hình danh tính.
2git commit --allow-empty -m "Commit đầu tiên"Git không biết bạn là ai nên từ chối tạo commit.
3git config --global user.name "Nguyen Van A"Khai báo tên.
4git config --global user.email "a.nguyen@example.com"Khai báo email.
5git commit --allow-empty -m "Commit đầu tiên"Lần này commit thành công và mang đúng tác giả.

Giải đáp. Git từ chối tạo commit và in "Author identity unknown", vì mỗi commit phải ghi tác giả. Sau khi khai báo, commit thành công và hiển thị đúng Author. Cờ --global ghi vào tệp cấu hình của người dùng (thường là ~/.gitconfig), nên áp dụng cho mọi kho trên máy; kho mới dùng main làm nhánh đầu tiên nhờ init.defaultBranch.

Kiểm tra lại cấu hình bất cứ lúc nào:

bash
git config --list
git --version

Kết quả git config --list có các dòng như user.name=Nguyen Van A và init.defaultBranch=main.

Hiểu lầm thường gặp

  • "Đổi cấu hình sẽ sửa các commit cũ." Không. Cấu hình chỉ ảnh hưởng commit và kho tạo sau đó; commit cũ giữ nguyên tác giả đã ghi.
  • "Email trong Git phải là email đăng nhập GitHub." Git chỉ ghi chuỗi bạn khai báo. Nền tảng như GitHub dùng email này để gắn commit vào tài khoản, nên nên dùng đúng email đã xác minh.
  • "Phải cấu hình lại ở mỗi kho." Với --global thì không; chỉ cần cấu hình riêng nếu một kho cần danh tính khác.

Tự kiểm tra

  1. Lệnh nào kiểm tra Git đã cài đúng?
  2. Vì sao git commit báo "Author identity unknown"?
  3. Bạn cần email công ty riêng cho một kho. Làm sao không ảnh hưởng kho khác?

Đáp án gợi ý. (1) git --version. (2) Chưa có user.name và user.email nên Git không biết ghi tác giả nào. (3) Chạy git config user.email ... không có --global bên trong kho đó (bài git config sẽ nói rõ các mức cấu hình).

Điều cần nhớ

  • Cài khác nhau, kiểm tra giống nhau: git --version.
  • Danh tính (user.name, user.email) là điều kiện để commit.
  • --global áp dụng cho mọi kho trên máy; commit cũ không bị đổi.
  • Bài sau: dùng SSH để không phải nhập mật khẩu mỗi lần.

Nguồn tham khảo

Pro Git, chương 1.5 "Installing Git" và 1.6 "First-Time Git Setup" (git-scm.com/book).