Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用git跟踪另一个目录中的更改?_Git - Fatal编程技术网

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

如何使用git跟踪另一个目录中的更改?,git,Git,我正在进行一个项目,在这个项目中,我可以访问代码,但无法将版本控制添加到源目录本身。(主要开发人员有自己的源代码管理,但由于此处不相关的原因,无法访问/理解等。) 为了保持理智,以及跟踪其他开发人员所做的任何更改,我希望设置某种版本控制系统。(Git是自VSS黑暗时代以来我使用的唯一版本控制系统,所以我可能会使用它。) 我目前的计划是镜像现有的代码库并在本地初始化git。但当其他开发人员进行更改时,我需要能够将本地副本与实际源代码进行比较 我的问题是: 这是一个合理的策略吗 如果是这样,我应该用

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

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

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

我的问题是:

  • 这是一个合理的策略吗
  • 如果是这样,我应该用
    gitinit--bare
    设置它,还是只使用
    gitinit
  • 我应该如何将本地副本与实际来源进行比较<代码>差异-qNr源/本地源/<代码>git diff--没有索引源/本地源/?还有别的吗

  • 此问题的标准解决方案是将传入代码视为“供应商分支”。只需创建供应商分支(作为孤立的、不相关的分支,其中没有代码,或者在单独的存储库中),添加初始版本并提交。当您获得更新时,将其放入供应商分支(或供应商存储库)并按常规提交


    要将供应商版本视为一个单独的存储库,您可以使用子模块(据我所知,这实际上是它们的预期用例)。

    首先,介绍一下背景知识

    在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这样的东西(它是为具有零星网络连接的独立开发人员设计的)将很好地作为你们两人之间的一个普通风投。如果你们都在做这个项目,你们都应该有风投的权限。那太棒了!我知道他们分开了,但我不知道你可以重置他们的位置。我现在就要试试这个!