59

我见过一些人有 git repos 和他们的 dot 文件。我想知道他们是否只是

cd ~/
git init
git add .vimrc
// etc

? 然后这就是他们保持最新状态的方式?或者他们可能会制作副本并同步它们?

你们推荐或使用什么策略?大多数情况下不想提交并推动我的整个〜/

谢谢

4

5 回答 5

78

为您的家创建一个 git 存储库可能不是一个好主意(您将花费更多时间创建 .gitignore 文件而不是做您真正想做的事情)。

我建议为您的 dotfiles 使用单独的 git 目录(例如 . ~/git/dotfiles),它们会为您的家创建符号链接(例如 .ln -s ~/git/dotfiles/.vim ~/.vim等)。

如果您每次想在某处安装点文件时都不想手动创建符号链接,则可以使用如下脚本:https ://github.com/gibfahn/dot/blob/master/link 。

于 2013-08-12T22:38:54.583 回答
61

我的~/.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 知道该做什么,不会陷入死循环。

于 2013-08-13T07:53:07.980 回答
4

我已经有一个“bundle”文件夹,我将所有插件都放在其中以通过Pathogen加载。所以我将该文件夹作为我的 git 文件夹(将插件作为子模块)并将我的 vimrc 放在那里。

我在官方中.vimrc写道:

let $MYVIMRC="<path_to_vimrc_in_bundle_folder>"
source $MYVIMRC
...
call pathogen#infect()

版本它!

这使我可以在家中的 Linux 机器和工作中的 Windows 机器之间共享我的配置。我还可以放入.vimrc特定于机器的官方配置,或者我不想公开的配置(比如包含登录名和密码的dbext配置文件......)

于 2013-08-13T08:56:06.987 回答
2

这是一个与平台无关和与 shell 无关的解决方案,除了您可用的 bourne 兼容 shell(bash、zsh、ksh 等)之外,没有其他依赖项。它适用于 mac、linux 和 windows:

点系统

它将自动与 github 和多台机器同步对您的点文件的更改,以及许多其他功能。

于 2016-08-06T15:44:20.687 回答
1

在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 提供了很好的解释

于 2017-03-04T18:43:23.197 回答