2013-08-12 5 views
45

Ich habe ein paar Leute gesehen, die Git-Repos mit ihren Dot-Dateien haben. Ich frage mich, ob sie nurHinzufügen von .vim ~/.vimrc zu github (aka Dot-Dateien)

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

? Und dann halten sie es auf dem neuesten Stand? Oder machen sie wahrscheinlich Kopien und synchronisieren sie?

Welche Strategie empfehlen oder verwenden Sie? Meistens will nicht begehen und schiebt meinen ganzen ~/

Dank

Antwort

62

ein Git Repository von zu Hause aus zu machen ist wahrscheinlich eine schlechte Idee (Sie Ihre .gitignore-Datei erstellen würden verbringen mehr Zeit als auf dem, was Sie tun möchte wirklich tun).

Ich empfehle, ein separates Git-Verzeichnis für Ihre dotfiles (z. B. ~/git/dotfiles) und sie als Symlinks zu Ihrem Haus (z. B. ln -s ~/git/dotfiles/.vim ~/.vim, etc.).

Wenn Sie nicht die Absicht haben, Symlinks manuell zu erstellen, wenn Sie Ihre dotfiles irgendwo installieren möchten, können Sie ein Skript wie das folgende verwenden: https://github.com/sitaktif/dotfiles/blob/master/bin/create-symlinks (es verwendet https://github.com/sitaktif/dotfiles/blob/master/CONFIG.example als die Konfiguration).

+1

+1. Bewährte Lösung, es funktioniert wirklich. – madhead

+13

Diese Lösung funktioniert einwandfrei. Sie müssen jedoch nicht unnötig viel Zeit mit der Verwaltung Ihrer '.gitconfig' verbringen. Sie können stattdessen alles ignorieren './*' alles ignorieren '! .vimrc' nicht ignorieren' .vimrc' – Sethish

+0

@Sethish, funktioniert wunderbar. Ich denke, deine ist die beste/sauberste Antwort. Wenn du es zu einer Antwort machst, gebe ich ihm +1, um es auffälliger zu machen! – Jon49

38

Ich habe meine ~/.vim Verzeichnis unter Versionskontrolle und meine „echte“ vimrc (die mit allen meinen Einstellungen) in diesem Verzeichnis, bei ~/.vim/vimrc:

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

Meine regelmäßigen ~/.vimrc hat nur eine Zeile:

runtime vimrc 

Keine Notwendigkeit, Symlinks oder was auch immer zu erstellen.

Dies ist, wie ich meine Config auf einer neuen Maschine schieben würde, wo hat Git bereits installiert:

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

Was ist folgt der gesamte Entstehungsprozess. Ich nehme an, dass Sie auf Github ein Konto und einen Repo mit dem Namen "vimconfig" erstellt haben und dass Sie bereits einen liebevoll gestalteten ~/.vimrc und einen gut organisierten ~/.vim/ haben.

$ 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 

An diesem Punkt sollten Sie den gleichen Inhalt auf Github haben und in Ihrem lokalen Repository.

Sie verwalten dieses Repository normal und drücken Ihre Commits, wenn Sie bereit sind. Einfach.

Beachten Sie, dass die ganze Github-Sache nur nützlich ist, wenn Sie Ihre Konfiguration auf mehreren Rechnern synchronisieren wollen/wollen oder sie mit anderen teilen wollen/wollen. Wenn Sie das nicht tun, gibt es keinen wirklichen Sinn, GitHub überhaupt zu benutzen.

(edit)

Vim 7.4 führten ein neues, sehr nützlich, Schema: Es ist für die üblichen ~/.vimrc und auch für ~/.vim/vimrc sieht so das ist noch weniger Arbeit für Sie:

$ 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 

Natürlich ist die Strategie, die ich vorgeschlagen, zunächst noch gültig ist, wenn Sie zu haben Umgang mit gemischten Vim-Versionen: Vim weiß, was zu tun ist und wird nicht in einer Endlosschleife mist.

+0

Unter Windows ist es% USERPROFILE% \ vimfiles \ vimrc – evpo

+0

Große Antwort! Halte es einfach! Wie dein Denken! Vielen Dank – Mantisimo

3

Ich habe bereits ein „Bündel“ Ordner, in dem ich meine Plugins alle über Pathogen laden setzen. Also habe ich diesen Ordner zu meinem git Ordner gemacht (mit den Plugins als Submodule) und meinen vimrc dort abgelegt.

Im offiziellen .vimrc ich schreibe:

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

und ich es nicht Version tun!

Dies ermöglicht es mir meine Konfiguration zwischen meinem Linux-Rechner zu Hause und meine Windows-Maschine bei der Arbeit zu teilen. Ich kann auch die offiziellen .vimrc Konfigurationen für die Maschine, oder diejenigen, die ich nicht öffentlich zugänglich machen möchte (wie die dbext Profile, die Logins und Passwörter enthält)

1

Hier ist eine Plattform Agnostic und Shell agnostische Lösung ohne Abhängigkeiten andere dann die bourne kompatible Shell Sie zur Verfügung (bash, zsh, kSH, etc.) haben. Es funktioniert auf Mac, Linux, & Fenster:

dotsys

es automatisch Änderungen an Ihrem dotfiles mit Github und mehreren Rechnern synchronisiert werden, zusammen mit vielen anderen Funktionen.

0

Check out steakcobra ‚s Lösung in Hacker News:

git init --bare $HOME/.myconf 
alias config='/usr/bin/git --git-dir=$HOME/.myconf/ --work-tree=$HOME' 
config config status.showUntrackedFiles no 

wo ~/.myconf die Lage des nackten Git Repository ist. Dann werden alle Dateien innerhalb $HOME kann wie so versioniert werden:

config status 
config add .vimrc 
config commit -m "Add vimrc" 
config add .config/redshift.conf 
config commit -m "Add redshift config" 
config push 

Wenn Sie weitere Erläuterungen benötigen, zur Verfügung gestellt Nikola Paolucci ein great explanation.

Verwandte Themen