SourceTree 未使用自定义 .git 文件夹名称重新定义 Git 存储库

SourceTree doesn't regconize Git repository with custom .git folder name

文件夹结构

----工作文件夹

------------|-----.git一个

------------|-----.git两个

------------|-----其他项目文件

简短: SourceTree 不会使用自定义 .git 文件夹名称重新定义 Git 存储库。我的 Git 存储库,我已将 .git 重命名为 .gitone。在 export GIT_DIR=.gitoneGIT_WORK_TREE 常量的帮助下,Git CLI 可以识别我的 WorkingFolder 并正常工作。但是,当我添加 WorkingFolder 时,SourceTree 没有对此进行调整,说 This is not a valid working copy path.

相关:

  1. Two git repositories in one directory?
  2. https://github.com/rrrene/gitscm-next/blob/master/app/views/blog/progit/2010-04-11-environment.markdown

更长:

WorkingFolder 是主要工作场所,它有 2 个远程存储库。 但事情是这样的:由于相同的 .git 文件夹,这两个存储库具有相同的日志。我希望它们是离散的并且有不同的日志。这就是为什么我使用 2 个命令 mv .git .gitonemv .git .gittwo 创建了两个名为 .gitone.gittwo 的文件夹。以下代码是我到目前为止所做的:

Git CLI root folder: WorkingFolder

export GIT_DIR=.gitone
export GIT_WORK_TREE=<path_to_WorkingFolder>

这个书呆子到底为什么要在同一个目录中添加两个 repo?/你为什么不创建另一个分支?

我有一个与我的团队合作的仓库。 同时,我也想将现有代码的一小部分添加到另一个仓库中,供个人日后重用。所以添加“个人”分支不在选项列表中。

我知道我可以创建 another 文件夹,然后每次更改时,我都会复制更改的文件并将它们粘贴到 another 文件夹中。我觉得这不是很“Git”的风格,也不是正确的方式。 那么,如何将这些存储库添加到 SourceTree?或者您知道如何实现这个目标吗?

欢迎任何建议。

编辑:还没搞清楚。我设法让 repos 都为我的目的工作。对于初级开发,我只是让 .gitone 文件夹具有 Git 序号(.git),SourceTree 将与此 repo 一起使用。对于另一个目的 (.gittwo),我必须通过 Git CLI 手动控制。 问题仍然存在!

编辑:Git-gui 能够打开使用 git --git-dir=.gittwo gui 分配给它的日志文件夹。不过我还是更喜欢 SourceTree

我怎样才能重现你的问题?

克隆任何 Git 存储库,键入 mv .git .gitanyname。尝试使用 SourceTree

打开 repo

I have a repo for working with my team. At the same time, I also want to add a small part of existing code to another repository for personal future reuse.

我会:

  • 在 WorkingFolder 之外创建第二个个人存储库文件夹
  • 每当我想从第一个存储库添加文件时,使用第一个 WorkingFolder/.git

即:

cd /path/to/WorkingFolder
cd ..
git init WorkingFolder2
cd WorkingFolder2
git --work-tree=../WorkingFolder add -- afile-from-WorkingFolder
git status
git commit -m "Import afile-from-WorkingFolder"

这样,SourceTree 仍然可以 open/visualize 两个存储库都没有问题。

If I try with --git-dir=../WorkingFolder/.git, it that means WorkingFolder2 is a duplication of WorkingFolder in term of physical storage on my PC?

实际上,我的意思是使用 --work-tree,而不是 --git-dir:您保留来自 WorkingFolder2 的索引,但从 WorkingFolder.
导入文件 而且,仅适用于 git add 命令,每当您需要从 WorkingFolderWorkingFolder2.

的 import/update 文件时

我在 discussion 中提出,对于 Windows 10(OP 使用):

set GIT_WORK_TREE=C:\path\to\WorkingFolder
cd C:\parth\to\WorkingFolder2
%LOCALAPPDATA%\SourceTree\SourceTree.exe