我正在开发一个项目,我可以访问代码,但无法将版本控制添加到源目录本身。 (主要开发人员有自己的源代码控制,但由于此处不相关的原因,它无法访问/理解/等。)
为了保持理智,并跟踪其他开发人员所做的任何更改,我希望设置某种版本控制系统。 (Git 是自 VSS 的黑暗时代以来我使用过的唯一版本控制系统,因此我可能会使用它。)
我当前的计划是镜像现有的代码库并在本地初始化 git。但当其他开发人员进行更改时,我需要能够将我的本地副本与实际源进行比较。
我的问题:
- 这是一个合理的策略吗?
- 如果是这样,我应该将其设置为
git init --bare
或者只是git init
? - 我应该如何将本地副本与实际来源进行比较?
diff -qNr source/ local-source/
?git diff --no-index source/ local-source/
?还有别的事吗?
最佳答案
首先,介绍一些背景知识。
在 Git 中,这些概念被清晰地分开:
- Git 存储库:包含 Git 的数据
- 工作树:文件系统中您实际工作的目录树
当您使用 git init /some/path
创建本地 Git 存储库时,它在 /some/path/.git
创建一个 Git 存储库,以及当您在 /some/path
内运行 Git 命令时在下面,Git 找到存储库,并假定工作树位于 /some/path
.
现在说说你的情况:
I'm working on a project where I have access to the code but can't add version control to the source directory itself.
一个有趣的选择是在源目录本身之外创建一个 Git 存储库,并设置 GIT_DIR
( repo )和 GIT_WORK_TREE
(工作树)相应的变量。
例如,如果源目录位于 /srv/project
,你可以这样做:
git init --bare /my/projects/repo.git
export GIT_TREE=/my/projects/repo.git
export GIT_WORK_TREE=/srv/project
然后你就可以cd /srv/project
并运行 Git 命令,就像您在 /srv/project
中有一个常规 Git 项目一样(Git 存储库位于 /srv/project/.git
)。你可以像平常一样使用Git命令,所有的仓库操作都会对/my/projects/repo.git
进行。 .
在您真正的 Git 存储库中,您可以使用另一个存储库作为远程存储库,并使用 Git 操作与您自己的分支进行比较。
我希望这会有所帮助。
关于git - 如何使用 git 跟踪另一个目录中的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36729525/