Hướng dẫn

Cấu hình Git: git config, tên, email và khóa SSH

Cập nhật: · Skillaria.Top

Cấu hình Git cơ bản gồm các lệnh git config --global user.name và git config --global user.email để ghi tác giả cho commit, cùng việc chọn trình soạn thảo và nhánh mặc định. Để đăng nhập GitHub không cần mật khẩu, tạo khóa SSH bằng ssh-keygen -t ed25519, thêm khóa công khai vào tài khoản và kiểm tra bằng ssh -T git@github.com.

Cấu hình Git tối thiểu trong một phút

Ngay sau khi cài đặt, hãy chạy bốn lệnh. Nếu thiếu hai lệnh đầu, Git sẽ không cho phép commit; hai lệnh còn lại giúp tránh những phiền toái thường gặp.

git config --global user.name "Nguyễn Thị Lan"
git config --global user.email "lan@example.com"
git config --global init.defaultBranch main
git config --global core.editor "code --wait"

Kiểm tra kết quả:

$ git config --global --list
user.name=Nguyễn Thị Lan
user.email=lan@example.com
init.defaultbranch=main
core.editor=code --wait

Tiếp theo sẽ giải thích từng cấu hình làm gì, Git lưu chúng ở đâu, và cách bật đăng nhập GitHub bằng SSH.

git config hoạt động thế nào: ba cấp cấu hình

Lệnh git config đọc và ghi tham số vào một trong ba tệp. Cấp hẹp hơn sẽ ghi đè cấp rộng hơn.

CấpCờTệpÁp dụng cho
Hệ thống--system/etc/gitconfig (trên Windows — trong thư mục cài đặt Git)Mọi người dùng trên máy
Toàn cục--global~/.gitconfig hoặc ~/.config/git/configMọi kho của bạn
Cục bộ--local (mặc định).git/config bên trong khoChỉ kho này

Hầu hết cấu hình cá nhân đặt ở cấp toàn cục, còn các trường hợp ngoại lệ đặt ở cấp cục bộ. Ví dụ, email công việc cho các dự án của công ty được đặt bên trong từng kho, không dùng --global.

Các lệnh git config hữu ích

git config user.email                    # xem giá trị hiện tại
git config --list --show-origin          # mọi cấu hình và tệp chứa từng cái
git config --global --edit               # mở ~/.gitconfig bằng trình soạn thảo
git config --global --unset core.editor  # xóa một tham số

Cờ --show-origin là trợ thủ tốt nhất khi gỡ lỗi: nó cho biết vì sao email của bạn «sai», bằng cách chỉ ra tệp mà giá trị được lấy về.

Tên và email: không phải chuyện hình thức

Mỗi commit lưu mãi tên và email của tác giả. Đây không phải tên đăng nhập hay mật khẩu — Git không kiểm tra chúng. Nhưng GitHub và GitLab dựa vào email để gắn commit với tài khoản của bạn: nếu địa chỉ không khớp với email đã xác nhận trong hồ sơ, commit sẽ không được tính vào biểu đồ hoạt động và hiển thị không có ảnh đại diện.

Đổi tên hoặc email về sau mà không viết lại lịch sử là không thể, nên hãy kiểm tra cấu hình trước commit đầu tiên.

Ẩn email thật

Nếu kho là công khai, email của bạn hiển thị với bất kỳ ai xem lịch sử. GitHub cung cấp địa chỉ dịch vụ dạng ID+username@users.noreply.github.com (trong cài đặt Emails). Đặt nó vào Git:

git config --global user.email "12345678+lan@users.noreply.github.com"

Email khác nhau cho công việc và dự án cá nhân

Để khỏi phải cấu hình từng kho công việc bằng tay, dùng kỹ thuật include có điều kiện. Trong ~/.gitconfig:

[includeIf "gitdir:~/work/"]
    path = ~/.gitconfig-work

Và trong ~/.gitconfig-work:

[user]
    email = lan@company.com

Giờ đây mọi kho nằm trong ~/work/ tự động dùng email công việc. Dấu gạch chéo ở cuối đường dẫn là bắt buộc.

Các cấu hình hữu ích khác

Trình soạn thảo

Git mở trình soạn thảo cho thông điệp commit, rebase tương tác và gộp. Mặc định thường là Vim. Các lựa chọn:

git config --global core.editor "code --wait"   # VS Code
git config --global core.editor "nano"          # Nano
git config --global core.editor "subl -n -w"    # Sublime Text

Nhánh mặc định

init.defaultBranch main đặt tên nhánh đầu tiên của kho mới (có từ Git 2.28). Nếu không đặt, Git tạo master và hiển thị gợi ý đổi tên.

Ký tự xuống dòng

git config --global core.autocrlf true    # Windows
git config --global core.autocrlf input   # macOS và Linux

Nhờ đó kho luôn lưu ký tự xuống dòng LF, và trong nhóm không xuất hiện «thay đổi» ở mọi dòng của tệp.

Hành vi của git pull

Nếu không chọn chiến lược, Git hiện đại sẽ yêu cầu bạn chỉ định rõ khi các nhánh đã phân kỳ. Hãy chọn một:

git config --global pull.rebase false   # gộp (merge), mặc định trước đây
git config --global pull.rebase true    # rebase, lịch sử thẳng
git config --global pull.ff only        # chỉ chuyển tiếp nhanh, nếu không thì báo lỗi

Tên tệp có dấu và màu sắc

git config --global core.quotepath false
git config --global color.ui auto

Bí danh (alias)

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.lg "log --oneline --graph --decorate --all"
git config --global alias.last "log -1 HEAD"

Sau đó git lg vẽ đồ thị nhánh, còn git last hiển thị commit cuối cùng.

Nội dung ~/.gitconfig sau khi cấu hình

[user]
    name = Nguyễn Thị Lan
    email = lan@example.com
[init]
    defaultBranch = main
[core]
    editor = code --wait
    autocrlf = input
    quotepath = false
[pull]
    rebase = false
[alias]
    st = status
    lg = log --oneline --graph --decorate --all

Đây là tệp văn bản thông thường: có thể sửa bằng tay và chuyển sang máy khác.

Git login: cách đăng nhập GitHub

Git không có lệnh git login — đây là cái bẫy thường gặp của người mới. Git không lưu «tài khoản»: xác thực diễn ra khi kết nối với máy chủ (clone, push, fetch) theo một trong hai giao thức.

HTTPSSSH
Địa chỉhttps://github.com/user/repo.gitgit@github.com:user/repo.git
Xác thực bằngToken truy cập hoặc đăng nhập qua trình duyệt (Credential Manager)Cặp khóa SSH
Mật khẩu tài khoảnKhông được chấp nhận từ năm 2021Không cần
Khi nào tiện hơnWindows với Git Credential Manager, proxy doanh nghiệpmacOS, Linux, máy chủ, CI

Đăng nhập qua HTTPS

Trên Git for Windows và các bản Git cho macOS có Git Credential Manager, lần git push đầu tiên sẽ mở cửa sổ trình duyệt để đăng nhập GitHub, và thông tin được lưu trong kho bảo mật của hệ thống. Cách khác là công cụ chính thức GitHub CLI: lệnh gh auth login hướng dẫn xác thực và cấu hình Git. Nếu làm thủ công, tạo Personal access token trong cài đặt GitHub (Developer settings) và nhập nó thay cho mật khẩu.

SSH cho Git: cấu hình từng bước

Khóa SSH là một cặp tệp: khóa riêng tư ở lại máy bạn, khóa công khai gửi cho GitHub. Máy chủ kiểm tra bạn sở hữu phần riêng tư, và không bao giờ hỏi mật khẩu nữa.

Bước 1. Kiểm tra xem đã có khóa chưa

ls -la ~/.ssh

Nếu đã có id_ed25519 và id_ed25519.pub, chuyển sang bước 3.

Bước 2. Tạo khóa

ssh-keygen -t ed25519 -C "lan@example.com"

Nhấn Enter để lưu khóa tại đường dẫn mặc định, và đặt một cụm mật khẩu để bảo vệ khóa, phòng khi laptop bị đánh cắp. Ed25519 là thuật toán hiện đại được khuyến nghị. Nếu hệ thống cũ không hỗ trợ, dùng ssh-keygen -t rsa -b 4096 -C "lan@example.com".

Bước 3. Thêm khóa vào ssh-agent

Agent giữ khóa đã giải mã trong bộ nhớ để không phải nhập cụm mật khẩu mỗi lần push.

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Trên macOS, thêm vào ~/.ssh/config các dòng sau để cụm mật khẩu được lưu trong Keychain:

Host github.com
    AddKeysToAgent yes
    UseKeychain yes
    IdentityFile ~/.ssh/id_ed25519

và chạy ssh-add --apple-use-keychain ~/.ssh/id_ed25519.

Bước 4. Thêm khóa công khai vào GitHub

cat ~/.ssh/id_ed25519.pub

Sao chép toàn bộ dòng, bắt đầu từ ssh-ed25519. Trên GitHub mở Settings → SSH and GPG keys → New SSH key, dán khóa và đặt tên dễ nhớ, ví dụ «Laptop 2026». Đừng bao giờ gửi hay đăng tệp không có đuôi .pub — đó là khóa riêng tư.

Bước 5. Kiểm tra kết nối

$ ssh -T git@github.com
Hi lan! You've successfully authenticated, but GitHub does not provide shell access.

Lần kết nối đầu tiên, SSH sẽ hỏi có tin tưởng máy chủ không — hãy đối chiếu dấu vân tay với những gì GitHub công bố trong tài liệu, rồi trả lời yes.

Bước 6. Chuyển kho sang SSH

Nếu kho được clone qua HTTPS, đổi địa chỉ remote:

git remote -v
git remote set-url origin git@github.com:lan/my-project.git
git push

Nhiều tài khoản GitHub trên cùng một máy

Một khóa SSH chỉ gắn được với một tài khoản GitHub. Với tài khoản công việc và cá nhân, tạo hai khóa và các bí danh máy chủ trong ~/.ssh/config:

Host github-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_work
    IdentitiesOnly yes

Clone các kho công việc qua bí danh: git clone git@github-work:company/app.git. Kết hợp với includeIf cho email, bạn có môi trường làm việc và cá nhân tách biệt hoàn toàn.

Các lỗi thường gặp khi cấu hình

«Please tell me who you are»

Chưa đặt user.name và user.email. Chạy các lệnh ở đầu bài và thử commit lại.

«Permission denied (publickey)»

GitHub không tìm thấy khóa phù hợp. Kiểm tra khóa đã được nạp vào agent (ssh-add -l), phần công khai đã có trong tài khoản, và xem chi tiết bằng ssh -vT git@github.com.

«Support for password authentication was removed»

Bạn đã nhập mật khẩu tài khoản khi dùng HTTPS. Hãy dùng token, đăng nhập qua Credential Manager, hoặc chuyển sang SSH.

Commit trên GitHub không có ảnh đại diện

Email trong git config user.email chưa được thêm vào hồ sơ GitHub. Thêm nó tại Settings → Emails — các commit cũ sẽ tự gắn vào tài khoản.

Cổng 22 bị chặn trong mạng

GitHub cũng nhận SSH qua cổng 443. Trong ~/.ssh/config đặt Host github.com, Hostname ssh.github.com, Port 443.

Thứ tự cấu hình trên máy mới

  1. Cài Git và kiểm tra git --version.
  2. Đặt user.name, user.email, init.defaultBranch và trình soạn thảo.
  3. Chuyển sang hoặc tạo ~/.gitconfig với các bí danh và chiến lược pull.
  4. Tạo khóa SSH mới (đừng sao chép khóa riêng tư cũ giữa các máy nếu không cần thiết) và thêm lên GitHub.
  5. Kiểm tra quyền truy cập bằng ssh -T git@github.com, rồi clone kho làm việc qua địa chỉ SSH.

Dùng khóa riêng cho từng thiết bị còn có lợi: khi mất laptop, chỉ cần xóa một khóa trên GitHub, còn quyền truy cập từ các máy khác vẫn không đổi.

Tóm lại

Cấu hình Git gồm ba bước: đặt tên và email bằng git config --global, chọn trình soạn thảo, nhánh mặc định và chiến lược pull, rồi kết nối GitHub — đơn giản và an toàn nhất là bằng khóa SSH. Hãy nhớ rằng không có lệnh git login: xác thực diễn ra khi kết nối với máy chủ. Cấu hình và truy cập SSH được hướng dẫn thực hành trong khóa học Git.

Câu hỏi thường gặp

Git lưu cấu hình ở đâu trên Windows?

Cấu hình toàn cục nằm ở C:\Users\Tên\.gitconfig, còn cấu hình cục bộ ở .git\config của từng kho. Để biết chính xác, dùng git config --list --show-origin.

Làm sao đặt lại cấu hình Git về mặc định?

Xóa hoặc đổi tên tệp ~/.gitconfig — Git sẽ quay về giá trị mặc định. Một tham số riêng được xóa bằng git config --global --unset tên.

Có thể dùng một khóa SSH cho cả GitHub và GitLab không?

Có, cùng một khóa công khai có thể thêm vào nhiều dịch vụ. Chỉ có một giới hạn: trên GitHub, khóa gắn với một tài khoản.

Làm sao ký commit để GitHub hiển thị nhãn Verified?

Cấu hình ký bằng khóa GPG hoặc SSH: ví dụ git config --global gpg.format ssh, user.signingkey trỏ tới khóa công khai, và commit.gpgsign true; sau đó thêm khóa lên GitHub với loại Signing key.

Sau khi cập nhật Git có phải cấu hình lại không?

Không. Việc cập nhật không đụng tới ~/.gitconfig và khóa trong ~/.ssh — mọi cấu hình được giữ nguyên.

Học chủ đề này qua video

Chủ đề này được giảng chi tiết kèm thực hành trong khóa học “Git с нуля до уверенного разработчика”.

Đến khóa học