0

我有一个回购:

mkdir test
cd test
git init
touch hi.txt
git add .
git commit -m 'first test add'
git status

其中我想添加一个单独的 git repo 来管理不同的工作:

git init --separate-git-dir .git2

.git但是,运行此命令会用存储符号链接的文件覆盖。

我不希望这种情况发生:(

我想拥有原始的.git回购/文件夹并.git2和谐相处...

这样我就可以运行以下命令:

git --git-dir=.git2 add new_file.txt

谢谢!

4

3 回答 3

3

--separate-git-dir选项的目的不是.git在同一个存储库中为您提供多个目录,而是.git目录与工作树分离。

文档中:

与其将存储库初始化为$GIT_DIR或的目录,不如在其中./.git/创建一个包含实际存储库路径的文本文件。

如果这是重新初始化,则存储库将移动到指定路径。

例如,这允许您将.git目录移动到单独的存储位置(例如,出于空间或备份原因),同时仍将工作树保留在原处。

如果您想将多个单独的存储库(每个都有自己的历史)合并为一个,您可能需要查看submodules

于 2020-03-02T14:07:06.073 回答
0

解决了这个问题:

git --work-tree=. --git-dir=git2 init

而不是使用--separate-git-dir标志

现在每个后续命令都需要:

git --work-tree=. --git-dir=git2 status
git --work-tree=. --git-dir=git2 add .
git --work-tree=. --git-dir=git2 commit -m 'yay!'

简基。但这正是我需要的...

于 2020-03-03T02:46:31.353 回答
0

您使用了错误的标志。--separate-git-dir 标志是将您的 .git 文件夹存储到自定义位置,而不是您项目的根目录。

于 2020-12-15T19:05:58.030 回答