上記の回答は優れており、まさに「実際のオペレーティングシステム」で行う方法です。
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 以外のサブディレクトリに「癖」がある場合もありますが、今のところ問題はありません。