Nỗi lo mỗi khi “lên đời” máy mới
Cài lại hệ điều hành hay đổi máy tính luôn là bài toán tốn thời gian. Bạn sẽ phải lục lại xem mình đã tinh chỉnh .zshrc ra sao, cài những plugin nào cho nvim, hay bộ phím tắt tmux tùy chỉnh từ năm ngoái nằm ở đâu. Trước đây, mình thường mất hơn 2 tiếng chỉ để copy-paste thủ công hoặc lục tìm trên GitHub Gist. Cách này không chỉ chậm mà còn rất dễ sót những thay đổi quan trọng.
Nhiều bạn chọn GNU Stow hoặc tạo thư mục ~/dotfiles rồi dùng symlink trỏ ra ngoài. Tuy nhiên, khi danh sách config lên đến hơn 50 file, thư mục $HOME sẽ trông như một “mạng nhện” symlink cực kỳ khó quản lý. Kỹ thuật Git Bare Repository xuất hiện như một cứu cánh. Đây là bí kíp giúp các Power User giữ thư mục Home sạch bóng mà vẫn đồng bộ cấu hình chỉ với một lệnh push.
Tại sao lại là Git Bare Repository?
Thông thường, git init sẽ tạo thư mục .git nằm ngay trong thư mục làm việc. Với Bare Repository, chúng ta tách biệt hoàn toàn phần metadata của Git và các file thực tế.
Điểm mấu chốt nằm ở chỗ: bạn có thể đặt thư mục chứa dữ liệu Git tại ~/.cfg nhưng lại chỉ định thư mục làm việc (working tree) chính là $HOME. Nhờ vậy, bạn thoải mái quản lý bất kỳ file nào trong máy mà không cần di chuyển chúng vào thư mục riêng hay tạo symlink rắc rối.
Hướng dẫn thiết lập từ A-Z
Chuẩn bị một repository trống trên GitHub hoặc GitLab. Sau đó, hãy mở terminal trên máy chính và thực hiện theo các bước sau.
Bước 1: Khởi tạo Bare Repository
Tạo một thư mục ẩn để lưu trữ lịch sử Git của toàn bộ cấu hình:
git init --bare $HOME/.cfg
Bước 2: Thiết lập Alias
Vì đây là bare repo, lệnh git thông thường sẽ không hiểu bạn muốn thao tác trên thư mục Home. Hãy định nghĩa một alias để “mách” cho Git biết đâu là nơi chứa metadata và đâu là nơi làm việc:
alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
Đừng quên thêm dòng này vào .zshrc hoặc .bashrc để dùng lâu dài nhé.
Bước 3: Lọc bỏ “tiếng nhiễu”
Mặc định, khi gõ config status, Git sẽ liệt kê hàng vạn file trong máy bạn như một mớ hỗn độn. Hãy yêu cầu Git chỉ quan tâm đến những file mà chúng ta chủ động thêm vào:
config config --local status.showUntrackedFiles no
Bước 4: Lưu cấu hình đầu tiên
Bây giờ, mọi thao tác diễn ra y hệt Git thông thường. Thử lưu cấu hình Zsh và Vim xem sao:
config add .zshrc
config add .vimrc
config commit -m "Chốt hạ: Initial dotfiles cho zsh và vim"
# Kết nối remote và đẩy lên mây
config remote add origin [email protected]:username/dotfiles.git
config push -u origin main
Lưu ý nhỏ: Mình từng mất trắng file .tmux.conf dày công tối ưu 6 tháng chỉ vì lỡ tay push --force từ một máy cũ. Hãy luôn tạo thói quen pull trước khi push nếu bạn làm việc trên cả máy công ty và máy nhà.
Cách kéo cấu hình về máy mới
Khi sang máy mới, bạn chỉ cần vài giây để tái lập môi trường làm việc. Tuy nhiên, hãy cẩn thận với các file mặc định có sẵn để tránh xung đột.
- Thêm alias
configvào shell hiện tại. - Chặn việc đệ quy chính thư mục cấu hình:
echo ".cfg" >> .gitignore - Clone và áp dụng cấu hình:
git clone --bare [email protected]:username/dotfiles.git $HOME/.cfg
config checkout
Nếu terminal báo lỗi do file .zshrc đã tồn tại, hãy tạm thời move nó sang thư mục backup rồi chạy lại config checkout. Mọi thứ sẽ đâu vào đấy ngay lập tức.
3 quy tắc vàng khi quản lý Dotfiles
1. Đừng để lộ Secret
Đưa API Key hay Token lên GitHub công khai là cách nhanh nhất để tài khoản của bạn bị “bay màu”. Hãy tách các thông tin nhạy cảm ra file .local. Ví dụ trong .zshrc, thêm dòng này ở cuối:
[ -f ~/.zshrc.local ] && source ~/.zshrc.local
Sau đó, nhớ đừng bao giờ config add file .zshrc.local đó nhé.
2. Phân nhánh theo hệ điều hành
Cấu hình trên macOS thường khác Ubuntu về đường dẫn brew hoặc font chữ. Thay vì viết hàng chục câu lệnh if-else loằng ngoằng, bạn nên tạo hai branch macos và linux. Việc quản lý sẽ nhàn hơn rất nhiều.
3. Tự động hóa triệt để
Hãy viết một script install.sh để tự động cài vim-plug hoặc Oh My Zsh ngay sau khi checkout. Mục tiêu là giúp máy mới sẵn sàng code chỉ sau đúng 1 lần gõ lệnh.
Lời kết
Git Bare Repository không chỉ là một công cụ, nó là cách tư duy chuyên nghiệp về quản lý môi trường làm việc. Ban đầu có thể bạn sẽ thấy hơi lạ lẫm với alias, nhưng sự gọn gàng và tốc độ mà nó mang lại hoàn toàn xứng đáng. Chúc bạn xây dựng được một bộ dotfiles ưng ý và không còn lo lắng mỗi khi đổi máy tính!

