首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以将.git文件夹存储在要跟踪的文件之外?

是否可以将.git文件夹存储在要跟踪的文件之外?
EN

Stack Overflow用户
提问于 2009-02-02 23:41:54
回答 8查看 53.8K关注 0票数 158

我有一个不同寻常的想法,使用git作为备份系统。假设我有一个目录./backup/myfiles,我想使用git备份它。为了保持干净,我不想在myfiles文件夹中有一个备份目录,所以我想我可以创建./ .git /git/myfiles。通过查看git文档,我尝试这样做:

代码语言:javascript
复制
$ 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

您可以看到我在那里得到的错误消息。我做错了什么?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-02-02 23:58:03

代码语言:javascript
复制
git --git-dir=../repo --work-tree=. add foo

这会做你想做的事情,但是当你不得不在你使用的每个git命令中指定它时,这显然会很糟糕。

你可以导出GIT_WORK_TREE=.GIT_DIR=../backup,Git会在每个命令中提取它们。不过,这只能让您轻松地在每个shell的单个存储库中工作。

我更倾向于将.git目录符号链接到其他地方,或者从您的主备份目录创建一个指向.git目录的符号链接。

票数 108
EN

Stack Overflow用户

发布于 2013-10-24 01:40:36

在我的git版本(1.7.11.3)上,可以使用git init (和git clone)的--separate-git-dir选项来实现这一点。该选项将git存储库从工作树中分离出来,并在工作树的根目录中创建一个文件系统不可知的git符号链接(以名为.git的文件的形式)。我认为结果和niks' answer是一样的。

代码语言:javascript
复制
git init --separate-git-dir path/to/repo.git path/to/worktree
票数 65
EN

Stack Overflow用户

发布于 2009-02-03 07:44:42

通常将一个目录命名为git存储库,它的工作树位于一个不寻常的位置,带有一个'.git‘扩展名,就像一个空存储库。

代码语言:javascript
复制
mkdir ../git_repos/myfiles.git

如果您在初始化时提供了--work-tree选项,那么这将自动设置core.worktree配置变量,这意味着一旦您指定了git目录,git就会知道在哪里可以找到工作树。

代码语言:javascript
复制
git --git-dir=../git_repos/myfiles.git --work-tree=. init

但您也可以在事后设置此变量。

代码语言:javascript
复制
git --git-dir=../git_repos/myfiles.git config core.worktree "$(pwd)"

完成此操作后,add命令应按预期工作。

代码语言:javascript
复制
git --git-dir=../git_repos/myfiles.git add foo
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/505467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档