我可以将.git文件夹存储在我想要跟踪的文件之外吗?

我可以将.git文件夹存储在我想要跟踪的文件之外吗?

我有一个不寻常的想法,使用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

您可以看到我到达的错误消息。我究竟做错了什么?


凤凰求蛊
浏览 562回答 3
3回答

慕森卡

git --git-dir=../repo --work-tree=. add foo这将做你想要的,但是当你必须用你曾经使用的每个git命令指定它时,显然会很糟糕。你可以导出GIT_WORK_TREE=.,GIT_DIR=../backupGit会在每个命令中选择它们。但是,这只会让您轻松地在每个shell的单个存储库中工作。我宁愿建议将.git目录符号链接到其他地方,或者从主备份目录创建.git目录的符号链接。

慕的地6264312

(和)的--separate-git-dir选项可用于在我的git()版本上完成此操作。该选项将git存储库与工作树分开,并在工作树的根目录中创建与文件系统无关的git符号链接(以文件名的形式)。我认为结果与niks的答案相同。git initgit clone1.7.11.3.gitgit init --separate-git-dir path/to/repo.git path/to/worktree
打开App,查看更多内容
随时随地看视频慕课网APP