
過去十年都用Macbook開發,中間換了幾台新機,只要插著USB用內建的系統移轉輔助程式(Migration Assistant),就可以把所有設定方便的轉移到新機上
所以一直沒研究怎麼整理這些配置,是該好好整理下了🫠
並且也打算把claude的配置加入,可以跨裝置的共享設定
dotfiles是什麼?為什麼要管理?
macOS上有許多開發工具和環境設定檔(例如 .zshrc、.vscode、.claude ...等)都散落在不同位置,且是.開頭的隱藏目錄或文件
把它們整理到一個統一的目錄並建立符號連結後,就可以:
- 在不同裝置上快速重建相同的環境
- 不用手動複製、貼上或記憶各個設定位置
- 可利用版本控制(Git)保存歷史並追蹤變更
管理 dotfiles 的核心方法
主要用到兩個:
Git
把所有設定檔放在一個Git儲存庫裡(例如 ~/.dotfiles),用版本控制保存變更和備份,並能夠同步到其他電腦
注意不要放一些私有密鑰,就算刪掉也還留在Git歷史裡
GNU Stow
用來建立「符號連結(symlinks = softlinks)」
把 dotfiles 保存在 Git 管理的目錄裡,但在系統中真正使用的是指向它們的連結
這樣不用複製檔案就能讓系統把設定「當成在原位置」一樣使用
步驟
1. 建立 dotfiles 目錄
先建立資料夾
mkdir -p ~/.dotfiles
cd ~/.dotfiles接著把設定檔移到這目錄,但要注意需根據原本在家目錄的結構,在.dotfiles內建立相同目錄結構,後續才能讓 stow 正確連結
例如
mv ~/.zshrc ~/.dotfiles/zsh/
mv ~/.config/nvim ~/.dotfiles/nvim/.config
mv ~/.gitconfig ~/.dotfiles/git/當然用finder操作也是一樣的喔
2. 安裝 GNU Stow
brew install stow3. 用 Stow 建立 symlinks
移動到.dotfiles目錄,對每個設定集執行stow
例如
stow zsh
stow nvim
stow git就會在家目錄生成symlink指向.dotfiles內對應檔案,例如~/.zshrc → ~/.dotfiles/zsh/.zshrc
若資料夾內有些不想同步的檔案,你可以在某些資料夾放入.stow-local-ignore,讓 stow 跳過它們
# macOS
\.DS_Store
# Git
\.git
\.gitignore例如常常會加到macOS的.DS_Store,又無法刪除,就會出現像這樣的錯誤
WARNING! stowing claude would cause conflicts:
* cannot stow .dotfiles/claude/.DS_Store over existing target .DS_Store since neither a link nor a directory and --adopt not specified
All operations aborted.4. 同步與快速部署
接著在.dotfiles初始化Git,並推到遠端
到你要還原的機器從遠端Git上下載,重複步驟3.,就可以啦
參考資料:
