我在不同的机器上使用vim并希望保持我的配置在它们之间同步,所以我尝试了使用pathogen来安装不同的vim插件的众所周知的方法,将它们保存为git子模块,例如{{ 3}}
现在我的.vim
文件夹是一个git repo,其中包含.vim/bundle
中每个文件夹的子模块。我将主要的repo上传到了bitbucket并从我的其他机器上克隆了它,在一些git submodule init
和git submodule update
之后,我在所有这些机器中得到了相同的配置。
现在问题出现了,我需要在其中一些插件中进行一些自定义。例如,一些子模块只是vim colorschemes。假设我想改变,说出评论的颜色。这是正确的方法吗?
我想到了一些想法:
.vim/bundle/vim-github-colorscheme/colors
(例如),然后AFAIK,我应该将这些更改推送到主vim-github-colorscheme
仓库,我不能,而且无论如何都会是荒谬的。我的自定义本质上是私有的。但是,如果我不与子模块仓库同步,则我的其他机器将无法看到这些更改。.vim/colors
中保留自己的colorscheme自定义项,那么这些更改将成为主要回购的一部分,它们将很容易在机器之间共享,但这打破了病原体的“捆绑”理念。另外,我不清楚如何通过这种方式实现其他类型的自定义(例如,修改snipMate的一些片段,甚至修改插件的代码)git pull
在我的所有机器中部署它们。但是这样,当在插件的原始源中进行更改时,很难将其与我自己的修改合并。我的想法用完了,出于上述原因,上述所有内容对我来说都是错误的。使用git和病原体的人如何管理这种情况?
答案 0 :(得分:4)
3是您用例的最佳解决方案。您不需要系统地创建所有这些分支:仅当确实需要更改某些东西并用fork替换原始子模块时才分叉插件。
那就是说,我使用了3和4的混合:我的插件不是子模块,我已经制作了两个用于定制目的的叉子。
答案 1 :(得分:1)
还有另一种解决方案。使用Git的子树合并,您可以获得所有插件的官方存储库的副本,每个插件都有自己的分支。然后在你的一个分支中它们一起存在,你可以随意编辑插件,当你想要更新时,你检查每个插件分支,更新它,然后将它合并回到它们所有的分支生活。
您对插件的更改将以您期望的方式合并。
它为您提供了所有的灵活性,并解决了您的问题,但设置起来有点痛苦,并且要保持最新状态。