Dotfiles — setup máy mới trong 15 phút thay vì cả ngày
Backup cấu hình terminal, editor, tool vào dotfiles repo — clone một lệnh là máy mới giống hệt máy cũ. Setup một lần, dùng ở bất cứ đâu.
Table of Contents
Hi friend! 👋
Lần đầu mua Mac mới, mình mừng rỡ mở hộp, setup Apple ID, đợi migration assistant chạy… rồi nhận ra: không có cách nào chuyển cấu hình terminal cả.
Mất cả buổi tối để nhớ lại: alias đó mình đặt tên gì, theme terminal nào, plugin nào đang dùng, font nào cài. Từng cái một. Như đánh mất trí nhớ digital vậy.
Lần thứ hai — mình đã có dotfiles repo. Clone, chạy script, 15 phút sau terminal, editor, tool giống hệt máy cũ. Không phải nhớ gì cả.
📖 Nói nhanh cho bạn chưa quen:
“Dotfiles” là mấy file cấu hình bắt đầu bằng dấu chấm trong thư mục home của bạn — .zshrc, .gitconfig, .vimrc, .config/… Chúng giống như DNA digital của máy: quy định terminal trông thế nào, alias nào có sẵn, editor highlight màu gì, Git dùng email nào.
Vấn đề là: mấy file này thường nằm rải rác, không backup, không sync. Máy hỏng = mất hết. Máy mới = setup lại từ đầu.
🔄 Hành trình của mình:
- Lần 1: Setup thủ công mỗi lần đổi máy → mất cả ngày, hay quên thứ, không bao giờ giống hệt máy cũ
- Lần 2: Copy paste file config qua USB/Drive → nhanh hơn nhưng vẫn phải symlink thủ công, thỉnh thoảng overwrite nhầm
- Lần 3: Đẩy hết lên GitHub repo + install script → clone một lệnh, 15 phút xong. Máy nào cũng giống nhau. Giờ setup máy mới vui như mở quà.
🎯 Bài này hữu ích nếu bạn:
| Bạn là… | Áp dụng để… |
|---|---|
| Dev | Không mất config khi đổi máy, sync giữa máy work và personal |
| Freelancer | Setup nhanh máy client, không leak config cá nhân |
| Người mới | Bắt đầu đúng — backup config từ ngày đầu dùng máy |
| Team lead | Share config chuẩn cho cả team, onboarding nhanh hơn |
💡 Đừng cố làm hết ngay. Đẩy 1 file .gitconfig lên repo, clone lại test xem chạy không. Ngon rồi mới thêm .zshrc, SSH config. Từng bước một.
🔧 Bắt đầu setup
Bước 1: Tìm dotfiles của bạn
Mấy file này nằm trong thư mục home (~), ẩn nên không hiện mặc định. Hiện chúng lên:
# Hiện file ẩn trong terminalls -la ~
# Hoặc dùng Finder: Cmd + Shift + . (chấm)Các file quan trọng nhất để bắt đầu:
| File | Làm gì |
|---|---|
.gitconfig | Cấu hình Git — name, email, alias, includeIf |
.zshrc hoặc .bashrc | Cấu hình shell — alias, prompt, PATH, plugin |
.ssh/config | SSH config — alias, key paths (xem bài trước) |
.vimrc hoặc .config/nvim/ | Cấu hình editor Vim/Neovim |
.config/ | Thư mục config của nhiều tool hiện đại |
Bước 2: Tạo repo dotfiles
# Tạo thư mục dotfilesmkdir ~/dotfilescd ~/dotfiles
# Init git repogit init
# Tạo file install script (sẽ viết ở bước sau)touch install.shchmod +x install.shTạo repo trên GitHub (private nếu có config nhạy cảm), rồi push:
git remote add origin git@github.com:your-username/dotfiles.gitgit add .git commit -m "feat: init dotfiles repo"git push -u origin mainBước 3: Di chuyển file config vào repo
Đừng copy — dùng symlink (liên kết mềm). Symlink giống như shortcut: file thật nằm trong repo, nhưng hệ thống vẫn thấy ở vị trí cũ. Sửa file trong repo = sửa file ở vị trí cũ.
# Di chuyển file thật vào dotfilesmv ~/.gitconfig ~/dotfiles/gitconfigmv ~/.zshrc ~/dotfiles/zshrc
# Tạo symlink trỏ ngược lạiln -s ~/dotfiles/gitconfig ~/.gitconfigln -s ~/dotfiles/zshrc ~/.zshrc📖 Symlink là gì? Tưởng tượng bạn có một cuốn sổ tay. Thay vì photocopy ra 3 bản để ở 3 nơi (sửa một nơi, 2 nơi kia cũ), bạn tạo 3 cái “biển chỉ đường” trỏ về cuốn sổ gốc. Sửa sổ gốc = cả 3 nơi đều thấy bản mới. Đó là symlink.
Kiểm tra symlink hoạt động:
# Phải hiện đường dẫn trỏ đến file trong dotfilesls -la ~/.gitconfig# Kết quả: ~/.gitconfig -> ~/dotfiles/gitconfigBước 4: Viết install script
Script này tự động hoá việc symlink — để máy mới chỉ cần chạy 1 lệnh.
#!/bin/bash# Script tự động symlink dotfiles vào thư mục home
DOTFILES_DIR="$HOME/dotfiles"
echo "🔧 Installing dotfiles..."
# Hàm tạo symlinklink_file() { local src="$DOTFILES_DIR/$1" local dest="$HOME/$2"
if [ -L "$dest" ]; then # Đã là symlink → cập nhật echo " ✅ Updating: $2" ln -sf "$src" "$dest" elif [ -e "$dest" ]; then # File tồn tại (không phải symlink) → backup rồi link echo " 📦 Backing up: $2" mv "$dest" "$dest.backup" ln -s "$src" "$dest" else # Chưa có gì → tạo symlink mới echo " 🔗 Creating: $2" ln -s "$src" "$dest" fi}
# Link từng filelink_file "gitconfig" ".gitconfig"link_file "zshrc" ".zshrc"link_file "ssh/config" ".ssh/config"
echo "✅ Dotfiles installed!"echo "💡 Run 'source ~/.zshrc' to reload shell config"📖 Script làm gì?
- Kiểm tra mỗi file: chưa có → tạo symlink; đã có → backup rồi tạo symlink; đã là symlink → cập nhật
- Không overwrite file cũ — luôn backup trước
Bước 5: Test trên máy thật
# Chạy install script~/dotfiles/install.sh
# Kiểm tracat ~/.gitconfig # Phải hiện nội dung từ ~/dotfiles/gitconfiggit config user.name # Phải hiện name của bạnBước 6: Setup máy mới — phần thưởng
Giờ tưởng tượng bạn mở máy mới. Chỉ cần:
# 1. Clone dotfiles repogit clone git@github.com:your-username/dotfiles.git ~/dotfiles
# 2. Chạy install script~/dotfiles/install.sh
# 3. Reload shellsource ~/.zshrc
# Xong! Terminal, Git, SSH giống hệt máy cũ15 phút thay vì cả ngày. Và quan trọng hơn: không phải nhớ gì cả.
Bonus: Cấu trúc repo gợi ý
Khi dotfiles lớn lên, organise cho dễ quản lý:
dotfiles/├── gitconfig # Git config├── zshrc # Shell config├── ssh/│ └── config # SSH config├── config/│ ├── nvim/ # Neovim config│ └── karabiner/ # Keyboard remap (macOS)├── install.sh # Install script├── README.md # Hướng dẫn setup└── .gitignore # Ignore file nhạy cảm# .gitignore — KHÔNG đẩy file nhạy cảm lên repo*.pem*.key.env.ssh/id_*.ssh/*.pubIteration tiếp theo — khi bạn sẵn sàng
Dotfiles không dừng ở symlink. Khi quen rồi, bạn có thể thêm:
- Homebrew Bundle — backup danh sách app đã cài, máy mới
brew bundle installlà xong - VS Code Settings Sync — hoặc push settings.json vào dotfiles
- Machine-specific config — dùng
iftrong script để load config khác nhau cho máy work vs personal - CI test — test install script trên GitHub Actions trước khi chạy thật
Nhưng đừng làm hết ngay. Bắt đầu từ 1-2 file, test, thấy ngon thì thêm. Iteration mà!
✅ Checklist áp dụng ngay:
- Tạo repo
dotfilestrên GitHub (5 phút) - Di chuyển
.gitconfigvào repo, tạo symlink - Viết install script cơ bản (copy template trên)
- Test: xoá symlink, chạy lại script, kiểm tra hoạt động
- Khi sẵn sàng: thêm
.zshrc, SSH config, editor config
💡 Đúc kết:
Setup máy mới không nên là cực hình. Backup config từ ngày đầu — tương lai bạn sẽ cảm ơn hiện tại.
Hi friend! Bạn có dotfiles repo chưa? Hay vẫn setup thủ công mỗi lần đổi máy? Chia sẻ kinh nghiệm với mình nhé — biết đâu tip của bạn lại giúp người khác tiết kiệm cả ngày setup thì sao.
Hẹn gặp lại ở bài sau! 👋