1. ホーム
  2. git

[解決済み] 追跡したいファイルの外側に .git フォルダを格納することはできますか?

2022-04-26 07:12:27

質問

gitをバックアップシステムとして使うという変わったアイデアを持っています。例えば、./backup/myfilesというディレクトリがあり、gitを使ってそれをバックアップしたいとします。物事をきれいに保つために、myfilesフォルダの中に.gitディレクトリを持ちたくないので、./backup/git_repos/myfilesを作成しようと思いました。gitのドキュメントを見る限りでは、私はこれをやってみました。

$ cd backup/myfiles
$ mkdir ../git_repos/myfiles
$ git --git-dir=../git_repos/myfiles init
Initialized empty Git repository in backup/git_repos/myfiles/
$ git --git-dir="../git_repos/myfiles/" add foo
fatal: pathspec 'foo' did not match any files

そこで表示されるエラーメッセージをご覧ください。私は何を間違えているのでしょうか?

解決方法は?

git --git-dir=../repo --work-tree=. add foo

しかし、git コマンドを使用するたびにこれを指定しなければならないのは、明らかに面倒です。

をエクスポートすることができます。 GIT_WORK_TREE=.GIT_DIR=../backup を実行すると、Git は各コマンドでそれらを拾います。しかし、これでは一つのシェルにつき一つのリポジトリでしか快適に作業することができません。

むしろ、.gitディレクトリをどこか別の場所にシンボリックリンクするか、メインのバックアップディレクトリから.gitディレクトリへのシンボリックリンクを作成することをお勧めします。