如何使用git跟踪另一个目录中的更改?
我正在进行一个项目,在这个项目中,我可以访问代码,但无法将版本控制添加到源目录本身。(主要开发人员有自己的源代码管理,但由于此处不相关的原因,无法访问/理解等。) 为了保持理智,以及跟踪其他开发人员所做的任何更改,我希望设置某种版本控制系统。(Git是自VSS黑暗时代以来我使用的唯一版本控制系统,所以我可能会使用它。) 我目前的计划是镜像现有的代码库并在本地初始化git。但当其他开发人员进行更改时,我需要能够将本地副本与实际源代码进行比较 我的问题是:如何使用git跟踪另一个目录中的更改?,git,Git,我正在进行一个项目,在这个项目中,我可以访问代码,但无法将版本控制添加到源目录本身。(主要开发人员有自己的源代码管理,但由于此处不相关的原因,无法访问/理解等。) 为了保持理智,以及跟踪其他开发人员所做的任何更改,我希望设置某种版本控制系统。(Git是自VSS黑暗时代以来我使用的唯一版本控制系统,所以我可能会使用它。) 我目前的计划是镜像现有的代码库并在本地初始化git。但当其他开发人员进行更改时,我需要能够将本地副本与实际源代码进行比较 我的问题是: 这是一个合理的策略吗 如果是这样,我应该用
gitinit--bare
设置它,还是只使用gitinit
此问题的标准解决方案是将传入代码视为“供应商分支”。只需创建供应商分支(作为孤立的、不相关的分支,其中没有代码,或者在单独的存储库中),添加初始版本并提交。当您获得更新时,将其放入供应商分支(或供应商存储库)并按常规提交
要将供应商版本视为一个单独的存储库,您可以使用子模块(据我所知,这实际上是它们的预期用例)。首先,介绍一下背景知识 在Git中,这些概念完全分开:
- Git存储库:包含Git的数据
- 工作树:文件系统中您实际工作的目录树
Git init/some/path
创建本地Git存储库时,它会在/some/path/.Git
处创建一个Git存储库,当您在/some/path
及其下运行Git命令时,Git会找到存储库,并在/some/path
处采用工作树
现在谈谈你的情况:
我正在进行一个项目,在这个项目中,我可以访问代码,但无法将版本控制添加到源目录本身
一个有趣的选择是在源目录之外创建一个Git存储库,并相应地设置Git_DIR
(repo)和Git_WORK_TREE
(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项目一样(在/srv/project/.Git
中有一个Git存储库)。您可以像往常一样使用Git命令,所有存储库操作都将对/my/projects/repo.Git
执行
在真实的Git存储库中,您可以将另一个repo用作远程,并使用Git操作与您自己的分支进行比较
我希望这能有所帮助。你最好通过外交手段来解决这个问题,而不是砍掉一个意大利面solution@Amit:假设开发人员搬到了一个发展中国家,很少有互联网接入,因此我们的通信是零星的,但变化可能很大(因为他有一个软件副本要处理).@Charles那么像Git这样的东西(它是为具有零星网络连接的独立开发人员设计的)将很好地作为你们两人之间的一个普通风投。如果你们都在做这个项目,你们都应该有风投的权限。那太棒了!我知道他们分开了,但我不知道你可以重置他们的位置。我现在就要试试这个!