2013-08-12 2 views
45

Я видел несколько человек, у которых есть git repos с их точечными файлами. Мне интересно, если они простоДобавление вашего .vim ~/.vimrc в github (aka dot files)

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

? И вот как они постоянно обновляются? Или они, вероятно, делают копии и синхронизируют их?

Какую стратегию вы, ребята, рекомендуете или используете? В основном не хочу совершить и раздвигать целые ~/

Благодаря

ответ

62

Создание репозитория Git вашего дома, вероятно, плохая идея (вы будете тратить больше времени создания файла .gitignore, чем делать то, что вы действительно хочу сделать).

Я предлагаю использовать отдельную директорию git для ваших dotfiles (например, ~/git/dotfiles) и их создание символических ссылок на ваш дом (например, ln -s ~/git/dotfiles/.vim ~/.vim и т. Д.).

Если вы не можете беспокоиться о создании символических ссылок вручную каждый раз, когда вы хотите установить ваши dotfiles, вы можете использовать скрипт, такой как следующий: https://github.com/sitaktif/dotfiles/blob/master/bin/create-symlinks (в качестве конфигурации он использует https://github.com/sitaktif/dotfiles/blob/master/CONFIG.example).

+1

+1. Проверенное решение, оно действительно работает. – madhead

+13

Это решение работает отлично. Но вам не нужно тратить слишком много времени на управление '.gitconfig'. Вместо этого вы можете игнорировать все './*' игнорировать все '! .vimrc' не игнорировать' .vimrc' – Sethish

+0

@Sethish, работает красиво. Я думаю, что ваш лучший ответ. Если вы ответите, я дам ему +1, чтобы сделать его более заметным! – Jon49

38

У меня есть ~/.vim каталог под контролем версий и мой «реальный» vimrc (один со всеми моими настройками) внутри этой директории, в ~/.vim/vimrc:

~/ 
---- .vim/ 
---- ---- (plugins and stuff) 
---- ---- vimrc 
---- .vimrc 

Мои регулярные ~/.vimrc имеет только одну строку:

runtime vimrc 

Не нужно создавать символические ссылки или что-то еще.

Это как бы я придерживаюсь своей конфигурации на новом компьютере, на котором уже установлен Git:

$ cd 
$ git clone [email protected]:romainl/dotvim.git .vim 
$ echo "runtime vimrc" > .vimrc 

Далее следует процесс создания целом. Я предполагаю, что вы создали учетную запись и репо под названием «vimconfig» на Github и что у вас уже есть любовно созданный ~/.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 знает, что делать и не будет дерьмово в бесконечном цикле.

+0

В Windows это% USERPROFILE% \ vimfiles \ vimrc – evpo

+0

Отличный ответ! Будь проще! Как и ваше мышление! благодаря – Mantisimo

3

У меня уже есть папка «bundle», где я загружаю все свои плагины через Pathogen. Поэтому я создал эту папку в моей папке git (с плагинами в качестве подмодулей) и разместил там vimrc.

В официальном .vimrc я пишу:

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

и я сделать не версии это!

Это позволяет мне делиться своей конфигурацией между моей машиной Linux дома и моей операционной системой Windows. Я также могу указать официальные конфигурации .vimrc, специфичные для машины, или те, которые я не хочу публиковать (например, профили dbext, содержащие логины и пароли ...)

1

Вот платформа агностик и оболочка агностическое решение без каких-либо зависимостей, кроме того, у вас есть совместимая с bourne оболочка (bash, zsh, ksh и т. д.). Она работает на Mac, Linux, & окна:

dotsys

Он будет автоматически синхронизировать изменения в ваших с GitHub составляют скрытые и несколько машин, наряду со многими другими функциями.

0

Заканчивать решение steakcobra «s в Hacker News:

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 

Если вам нужна дополнительная объяснение, Никола Paolucci предоставил great explanation.