git - 如何使用 git 跟踪另一个目录中的更改?

标签 git

我正在开发一个项目,我可以访问代码,但无法将版本控制添加到源目录本身。 (主要开发人员有自己的源代码控制,但由于此处不相关的原因,它无法访问/理解/等。)

为了保持理智,并跟踪其他开发人员所做的任何更改,我希望设置某种版本控制系统。 (Git 是自 VSS 的黑暗时代以来我使用过的唯一版本控制系统,因此我可能会使用它。)

我当前的计划是镜像现有的代码库并在本地初始化 git。但当其他开发人员进行更改时,我需要能够将我的本地副本与实际源进行比较。

我的问题:

  1. 这是一个合理的策略吗?
  2. 如果是这样,我应该将其设置为 git init --bare或者只是 git init
  3. 我应该如何将本地副本与实际来源进行比较? 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/

相关文章:

git - 该目录似乎不是 git 存储库

windows - 从 Windows 上的 Git 开始,接收 sh.exe": config: command not found

git - git clone 是否复制所有源代码?

svn - 为什么在 Mercurial 中分支和 merge 比在 Subversion 中更容易?

git - 大测试数据文件和github

ruby-on-rails - rake :db seed issue with Catarse

git - 将差异转换为提交

git - 无法执行 - Git P4 克隆损坏

git - 检查一个分支是否已经 merge 到 master 并且没有被恢复

git - ssh 不工作,muxserver_listen bind() : No such file or directory