26

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

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

そんな感じ。

4

9 に答える 9

6

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

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

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

そこで、私がしばらく使っていたセットアップは、$HOME をリポジトリにして、.gitignore ファイルを作成し、必要な「dotfiles」ファイルを個別に追加することで作成されました。また、自動バックアップを取得するためだけに、アップストリームとしてバックアップ ドライブ (この場合は 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

ホームディレクトリに追加する「通常の」ファイルはドットファイルリポジトリによって無視されますが、新しいドットファイルは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 以外のサブディレクトリに「癖」がある場合もありますが、今のところ問題はありません。

于 2016-04-11T02:52:11.033 に答える
4

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

ドットシス

他の多くの機能とともに、ドットファイルへの変更を github や複数のマシンと自動的に同期します。

于 2016-08-04T02:51:29.567 に答える
2

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

于 2014-08-04T20:56:29.550 に答える
1

プレーンな 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 ベア リポジトリです。

使用法

その後、通常の git コマンドを git エイリアス (例: config など、選択したもの) と共に使用できます。

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

利点

  • 余分なツールはありません
  • シンボリックリンクなし

詳細情報

于 2016-08-01T23:13:21.307 に答える
0

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

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

  • dfm を使用したドットファイルの選択は次のとおりです (例と見なすことができます): vicente's dotfiles
  • Github 公式リポジトリDFM サイト
于 2015-04-13T16:04:32.083 に答える
0

裸の git リポジトリでは、bash エイリアスの代わりに git エイリアスを使用することをお勧めします。git コマンドの git オートコンプリートがまだ機能するため、より適切に統合されます。

git init --bare ~/dotfiles.git
git config --global alias.dotfiles '!git --git-dir=$HOME/dotfiles.git/ --work-tree=$HOME'

次のように使用されます。

git dotfiles add .gitconfig
git dotfiles commit -m 'Add gitconfig'

詳細については、このブログ投稿を参照してください。

于 2021-11-12T17:30:02.323 に答える