web-dev-qa-db-ja.com

Githubを使用してドットファイルを管理する方法は?

自動化されていないため、ドットファイルをgithubに保存しました。自分で更新する必要があります。

ドットファイルを自動インストール/更新/同期できる方法はありますか?つまり、新しいサーバーでdotfilesをダウンロードし、installスクリプトを実行してdotfilesをローカルにコピーします。しばらくして、updateToRemoteスクリプトを実行してローカルの変更をリモートリポジトリにプッシュし、別のサーバーでupdateToLocalスクリプトを実行してリモートの変更をローカルにプルできます。

そんな感じ。

23
nfpyfzyf

ドットファイルに関する主な情報源は dotfiles.github.io です。

これは、シンボリックリンクメソッドに基づいて、 GitおよびGithubを使用してDotfileを管理する のようなブログ投稿を参照します。

まず、すべてのドットファイルを、/home/smalleycreative/dotfiles/vimrcのように、dotfilesと呼ばれるフォルダーに配置します。
次に、ホームディレクトリからそれらにシンボリックリンクします。


Jaime はアトラシアンのチュートリアルに言及しています " dotfilesを保存する最良の方法:裸のGitリポジトリ "

この手法は、特別に細工されたエイリアスを使用して、Gitベアリポジトリを「サイド」フォルダー($HOME/.cfg$HOME/.myconfigなど)に保存することで構成されます。これにより、他のGitリポジトリに干渉する通常の.git/ローカルフォルダーではなく、そのリポジトリに対してコマンドが実行されます。周り。
(そして、dotfilesフォルダーはgitリポジトリとして管理されます)

32
VonC

上記の答えは優れており、まさに「実際のオペレーティングシステム」でそれを行う方法です。

Cygwin/msysを使用している有名な商用OSでこれに問題が発生したため、シンボリックリンクを使用すると、お気に入りのソフトウェアの「ネイティブ」ポートで問題が発生する場合があります。

これを回避するために、フォルダ$ HOMEを直接gitリポジトリにするだけで実験しました。いくつかの失敗の後、キーはすべて.gitignoreファイルにあることがわかりました。

したがって、私がしばらく使用していたセットアップは、$ HOMEをリポジトリーにし、.gitignoreファイルを作成し、必要な「dotfiles」ファイルを個別に追加することによって作成されました。自動バックアップを得るためだけに、アップストリームとしてバックアップアップドライブ(z:この場合はz)にリポジトリを追加しました。フォルダが既にバックアップされている場合、アップストリームを追加することは不必要な複雑化です。したがって、「/ z/Backups/Dotfiles.git」が既存の「ベア」リポジトリであると想定すると、msysシェルでは、設定手順は次のとおりです。

$ cd $HOME
$ git init
Initialised empty Git repository in $HOME
$ git add .bashrc .emacs .gitconfig # for example
$ git commit -m "Initial import of dotfiles"
[master (root-commit) xxxxxxxx] Initial import for dotfiles
 3 files changed, xxx instertions(+)
 create mode 100644 .bashrc
 create mode 100644 .emacs
 create mode 100644 .gitconfig

# The following two lines just add an "upstream" purely for backup purposes.
$ git remote add Origin /z/Backups/Dotfiles.git
$ git Push -u Origin master
<< snip >>

次に、以下を$ HOME/.gitignoreに入れます。

# First exclude everything.
*
# then re-include all "dotfiles"
!/.*
# then a bunch of specific excludes as they are more-or-less "cache" data rather than configuration.
/.bash_history
/.dbus-keyrings/
/.emacs.d/
/.gimp-2.8/
/.git/
/.gitk
/.idlerc/
/.lesshst
/.saves/
/.thumbnails/

最後に、次のコマンド(これらの出力をキャプチャしなかったことをお詫びします)は、.gitignore自体をリポジトリに追加します。

$ cd $HOME
$ git add .gitignore
$ git commit -m "Added some rules so git status on the dotfiles is useful."
$ git Push

これで、ホームディレクトリに追加した「通常の」ファイルはdotfilesリポジトリによって無視されますが、新しいドットファイルはgitステータスで表示されます。例:

$ cd $HOME
$ touch NewFile.txt
$ git status
On branch master
Your branch is up-to-date with 'Origin/master'.

nothing to commit, working directory clean

$ touch .funkychicken
$ git status
On branch master
Your branch is up-to-date with 'Origin/master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        .funkychicken

nothing added to commit but untracked files present (use "git add" to track)

これまでのところ、いくつかのサブディレクトリが独自の(無関係な)gitリポジトリであっても、これはうまく機能しています。 git以外のサブディレクトリに「癖」があることもありますが、これまでのところ問題はありません。

5
user6092647

ええと、それは3年後のことで、誰も素晴らしいものを思いついていないので、この問題を試しました。これは、プラットフォームに依存せず、シェルに依存せず、利用可能なボーン互換シェル(bash、zsh、kshなど)以外の依存関係はありません。 Mac、Linux、Windowsで動作します。

dotsys

それは他の多くの機能と共にgithubと複数のマシンであなたのdotfilesへの変更を自動的に同期します。

4
arctelix

私はgitリポジトリ(github)とbashスクリプトを使用してシンボリックリンクを作成しています。しかし今、私はより強力であるように見えるこのツールを見つけました。確認してください: https://github.com/shanx/python-dotfiles

2
Marek Fajkus

プレーンgitを使用してドットファイルを管理する興味深い方法を見つけました。シンボリックリンクは必要ありません。このようにして、通常の方法でプッシュとプルを実行できるはずです。

セットアップ

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

ここで、私の〜/ .myconfディレクトリはgit bareリポジトリです。

用途

その後、通常のgitコマンドをgitエイリアスで使用できます。設定またはあなたが選択したもの。

config status
config add .vimrc
config commit -m "Add vimrc"
config Push

メリット

  • 追加の工具は不要
  • シンボリックリンクなし

詳細情報

1
lorey

git Push/pullコマンドを使用してドットファイルを更新/同期します(「中央」リポジトリとして機能するGitHub)。ドットファイルのシンボリックリンクに関しては、私はそれについての記事を書きました。確認してください: dotfilesを簡単に管理

0
Gee-Bee

主なアイデアは、gitで追跡したいすべての実際のドットファイルを含む分離されたディレクトリ(通常は.dotfilesと呼ばれます)を持ち、ホームディレクトリにシンボリックリンクを持つことです。

このアプローチについてはすでに多くの作業が行われているため、[〜#〜] dfm [〜#〜](dotfiles managerを確認することをお勧めします。 ):

  • 以下は、dfmを使用した私のdotfilesの選択です(例として考えることができます)。 vicente's dotfiles
  • Github公式リポジトリ DFMサイト
0
Vicente Bolea