用户的应用程序配置通常存储在 dotfiles 里,如果你花了几个小时精心调整你的 vim
配置,那你肯定不想因为什么意外导致 ~/.vimrc
丢失,同时最好还能有一种方便的方法能让你在不同设备之间同步 ~/.vimrc
。这种情况下,就可以考虑使用 git
管理 dotfiles。
优点
- 仅在
$HOME
里多创建一个目录,无需创建符号链接。 - 用版本控制系统管理 dotfiles,能清楚地知道之前修改配置文件的目的,回溯到先前的版本也很容易。
- 能将存储 dotfiles 的仓库托管在 GitHub 等平台,备份和迁移都很方便。
git
应用广泛,你可能已经会一些基本的git
操作(git add
、git commit
、git push
),无需额外花时间学习某些工具来管理 dotfiles。如果你不会,花时间学习git
也是值得的123。
步骤
初始化
# 初始化 Git Bare Repository
git init --bare $HOME/.dot
# 创建 alias,方便执行操作
alias dot="git --git-dir=$HOME/.dot --work-tree=$HOME"
# 不显示工作区($HOME)未跟踪的文件
dot config --local status.showUntrackedFiles no
使用
# 添加 dotfile
dot add ~/.aliases
dot commit -m "add aliases"
# 配置远程仓库
dot remote add origin git@github.com:username/reponame.git
# 推送 commit 到远程仓库,同时将远程仓库与本地的 master 分支关联
# 关联以后,推送 commit 就只需要输入 dot push
dot push -u origin master
在新系统上恢复 Dotfiles
git clone --bare git@github.com:username/reponame.git $HOME/.dot
alias dot="git --git-dir=$HOME/.dot --work-tree=$HOME"
dot config --local status.showUntrackedFiles no
#这一步可能会提示 「error: The following untracked working tree files would be overwritten by checkout:」,按照 git 的说明移动或删除这些文件就行
dot checkout
其它方法
以下是我找到的其它方法,我并没有尝试过。
GNU stow
【譯】使用 GNU stow 管理你的點文件 - Farseerfc的小窩
yadm
TheLocehiliosan/yadm: Yet Another Dotfiles Manager
参考
- Dotfiles - ArchWiki
- GitHub does dotfiles - dotfiles.github.io
- Manage Dotfiles With a Bare Git Repository
- How to store dotfiles | Atlassian Git Tutorial