代码之家  ›  专栏  ›  技术社区  ›  Mario

如何在不同环境中的项目源代码之间正确地只识别修改过的文件和新文件?

git
  •  0
  • Mario  · 技术社区  · 5 年前

    我尝试将生产中托管的项目的源代码与同一项目的本地副本混合,并进行一些修改。(可能对生产副本进行了修改和新文件)本地副本有一个git存储库,我尝试通过它来识别这两种环境中的修改和新文件,然后纠正这些事件,一旦解决,将项目的更新副本上载到生产环境

    我尝试的方式如下

    1. 在本地存储库中,我创建了一个名为test/migration的新分支
    2. 在这个分支中,我粘贴了从生产中的项目副本中获取的所有源代码

    在这一点上,我发现的问题是,在本地复制生产代码时,在使用git状态时,所有文件都被单独标记为已修改,这样当它们被查看时,它们就有了确切的内容

    这使得我很难识别相关文件,因为有6000多个文件

    谢谢你的建议

    0 回复  |  直到 5 年前
        1
  •  0
  •   joanis Ankur Kumar Srivastava    5 年前

    TL;博士 我想你只是错过了一个电话 git reset 告诉Git考虑本地文件状态与当前 HEAD .

    设置

    根据您的描述,我将假设以下设置

    • RemoteURL 你的Git回购是用于克隆的吗
    • ProdCopy 是从prod复制内容的目录。

    解决方案:为ProdCopy创建并整理一个沙箱

    从克隆开始 远程URL 放进一个新的空沙箱里 产品拷贝 将文件放入其中:

    git clone --no-checkout RemoteURL ProdSandbox
    

    现在,你有一个沙箱,只有一个 .git 文件夹在里面。从中复制所有文件 产品拷贝 在其中:

    cp -ar ProdCopy/* ProdSandbox
    

    现在 git status 告诉你一切都变了,这让我觉得我只是复制了你在问题中所说的。让我们告诉Git把沙盒里的东西当作你现在的状态:

    git reset
    

    现在 git状态 git diff 将只报告中的文件之间的实际差异 ProdSandbox origin/main (或者别的什么 origin/HEAD 指向)。

    如果要与其他提交或分支进行比较,请将其添加到 git重置 ,但在这种情况下,您可能希望创建 test/migration

    git checkout -b test/migration
    git reset <some branch or commit>
    

    要提交所需的更改,请创建 测试/迁移 如果你还没有,像往常一样承诺。