我见过一些人有 git repos 和他们的 dot 文件。我想知道他们是否只是
cd ~/
git init
git add .vimrc
// etc
? 然后这就是他们保持最新状态的方式?或者他们可能会制作副本并同步它们?
你们推荐或使用什么策略?大多数情况下不想提交并推动我的整个〜/
谢谢
为您的家创建一个 git 存储库可能不是一个好主意(您将花费更多时间创建 .gitignore 文件而不是做您真正想做的事情)。
我建议为您的 dotfiles 使用单独的 git 目录(例如 . ~/git/dotfiles
),它们会为您的家创建符号链接(例如 .ln -s ~/git/dotfiles/.vim ~/.vim
等)。
如果您每次想在某处安装点文件时都不想手动创建符号链接,则可以使用如下脚本:https ://github.com/gibfahn/dot/blob/master/link 。
我的~/.vim
目录处于版本控制之下,而我的“真实” vimrc
(具有我所有设置的目录)位于该目录中,位于~/.vim/vimrc
:
~/
---- .vim/
---- ---- (plugins and stuff)
---- ---- vimrc
---- .vimrc
我的常规~/.vimrc
只有一行:
runtime vimrc
无需创建符号链接或其他任何东西。
这就是我将我的配置推送到已经安装了 Git 的新机器上的方式:
$ cd
$ git clone git@github.com:romainl/dotvim.git .vim
$ echo "runtime vimrc" > .vimrc
接下来是整个创作过程。我假设您已经在 Github 上创建了一个名为“vimconfig”的帐户和一个 repo,并且您已经拥有一个精心制作~/.vimrc
和组织良好的~/.vim/
.
$ cd
$ mv .vimrc .vim/vimrc
$ echo "runtime vimrc" > .vimrc
$ cd .vim
$ git init
$ echo "This is my Vim config." > README
$ git add *
$ git commit -m "My Vim config is versioned."
$ git remote add origin https://github.com/username/vimconfig.git
$ git push origin master
此时,您应该在 Github和本地存储库中拥有相同的内容。
您可以正常管理该存储库并在准备好时推送您的提交。简单的。
请注意,整个 Github 仅在您需要/想要在多台机器上同步配置或以某种方式需要/想要与他人共享时才有用。如果你不这样做,那么使用 GitHub 就没有任何意义。
(编辑)
Vim 7.4 引入了一个新的、非常有用的方案:它既寻找通常的~/.vimrc
,也寻找,~/.vim/vimrc
这样对你来说工作量就更少了:
$ cd .vim
$ git init
$ echo "This is my Vim config." > README
$ git add *
$ git commit -m "My Vim config is versioned."
$ git remote add origin https://github.com/username/vimconfig.git
$ git push origin master
当然,如果您必须处理混合的 Vim 版本,我最初建议的策略仍然有效:Vim 知道该做什么,不会陷入死循环。
我已经有一个“bundle”文件夹,我将所有插件都放在其中以通过Pathogen加载。所以我将该文件夹作为我的 git 文件夹(将插件作为子模块)并将我的 vimrc 放在那里。
我在官方中.vimrc
写道:
let $MYVIMRC="<path_to_vimrc_in_bundle_folder>"
source $MYVIMRC
...
call pathogen#infect()
我不版本它!
这使我可以在家中的 Linux 机器和工作中的 Windows 机器之间共享我的配置。我还可以放入.vimrc
特定于机器的官方配置,或者我不想公开的配置(比如包含登录名和密码的dbext配置文件......)
这是一个与平台无关和与 shell 无关的解决方案,除了您可用的 bourne 兼容 shell(bash、zsh、ksh 等)之外,没有其他依赖项。它适用于 mac、linux 和 windows:
它将自动与 github 和多台机器同步对您的点文件的更改,以及许多其他功能。
在Hacker News中查看 StreakyCobra 的解决方案:
git init --bare $HOME/.myconf
alias config='/usr/bin/git --git-dir=$HOME/.myconf/ --work-tree=$HOME'
config config status.showUntrackedFiles no
~/.myconf
裸 git 存储库的位置在哪里。然后可以像这样对其中的任何文件$HOME
进行版本控制:
config status
config add .vimrc
config commit -m "Add vimrc"
config add .config/redshift.conf
config commit -m "Add redshift config"
config push
如果您需要进一步解释,Nicola Paolucci 提供了很好的解释。