我有一个不同寻常的想法,使用git作为备份系统。假设我有一个目录./backup/myfiles,我想使用git备份它。为了保持干净,我不想在myfiles文件夹中有一个备份目录,所以我想我可以创建./ .git /git/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
您可以看到我在那里得到的错误消息。我做错了什么?
发布于 2009-02-02 23:58:03
git --git-dir=../repo --work-tree=. add foo
这会做你想做的事情,但是当你不得不在你使用的每个git命令中指定它时,这显然会很糟糕。
你可以导出GIT_WORK_TREE=.
和GIT_DIR=../backup
,Git会在每个命令中提取它们。不过,这只能让您轻松地在每个shell的单个存储库中工作。
我更倾向于将.git目录符号链接到其他地方,或者从您的主备份目录创建一个指向.git目录的符号链接。
发布于 2013-10-24 01:40:36
在我的git版本(1.7.11.3
)上,可以使用git init
(和git clone
)的--separate-git-dir
选项来实现这一点。该选项将git存储库从工作树中分离出来,并在工作树的根目录中创建一个文件系统不可知的git符号链接(以名为.git
的文件的形式)。我认为结果和niks' answer是一样的。
git init --separate-git-dir path/to/repo.git path/to/worktree
发布于 2009-02-03 07:44:42
通常将一个目录命名为git存储库,它的工作树位于一个不寻常的位置,带有一个'.git‘扩展名,就像一个空存储库。
mkdir ../git_repos/myfiles.git
如果您在初始化时提供了--work-tree
选项,那么这将自动设置core.worktree
配置变量,这意味着一旦您指定了git目录,git就会知道在哪里可以找到工作树。
git --git-dir=../git_repos/myfiles.git --work-tree=. init
但您也可以在事后设置此变量。
git --git-dir=../git_repos/myfiles.git config core.worktree "$(pwd)"
完成此操作后,add命令应按预期工作。
git --git-dir=../git_repos/myfiles.git add foo
https://stackoverflow.com/questions/505467
复制相似问题