用 stow 管理 dotfiles
date
Jun 18, 2023
updateDate
slug
use-stow-manage-dotfiles
status
Published
tags
Tools
summary
使用 stow 管理 Dotfiles
type
Post
在发现这个工具之前我一直使用 在
~
目录, init 一个 git 仓库来管理自己的 dotfiles
但是有很多不方便的地方,例如~
目录有大量的文件,只能用.gitignore
一个个排除,或者*
排除,再用!
忽略
gitignore
如果排除某个文件的父目录,则无法重新包含该文件,所以大部分情况下都需要使用git add -f
- 如果自己的开发目录在 home 目录下,大概率会导致 git 状态混乱,特别是 vscode 版本管理中,会出现不想干的 repo
- 恢复或迁移到新设备时不能 one by one 的恢复
也体验过 bare git repo 的方式,但都有不舒服的地方
最近看到了 twitter 有人推荐了 stow,了解了一波,感觉相见恨晚。
使用起来也非常简单,例如我需要同步
fish
配置。- 在
$HOME
目录建一个dotfiles
目录,同时建一个 fish 目录用来存放 fish 文件 - 这个 dotfiles/fish 文件夹在 stow 称之为 package
- 将 fish 配置文件复制到
dotfiles/fish
中,记得保持 相对于 home目录的层级关系。
- 在 dotfiles 目录 执行
stow fish
即可
目录层级大概是这样
➜ ls -la --tree --level=3 .config/fish/ dotfiles/fish/ .config/fish ├── completions ├── conf.d │ ├── alias.fish -> ../../../dotfiles/fish/.config/fish/conf.d/alias.fish │ └── atuin.fish -> ../../../dotfiles/fish/.config/fish/conf.d/atuin.fish ├── config.fish -> ../../dotfiles/fish/.config/fish/config.fish ├── fish_variables -> ../../dotfiles/fish/.config/fish/fish_variables └── functions dotfiles/fish └── .config ├── fish │ ├── completions │ ├── conf.d │ ├── config.fish │ ├── fish_variables │ └── functions
恢复时也只需执行 stow fish 即可。