用 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 配置。
  1. $HOME 目录建一个 dotfiles 目录,同时建一个 fish 目录用来存放 fish 文件
    1. 这个 dotfiles/fish 文件夹在 stow 称之为 package
  1. 将 fish 配置文件复制到 dotfiles/fish 中,记得保持 相对于 home目录的层级关系。
  1. 在 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 即可。

© Zzde 2020 - 2024