为现有环境中的分支设置 git(git 中没有共享历史记录)

Setting up git for branches from already existing environments (no shared history in git)

我有两种环境的代码,UAT 和 PROD。假设我复制了 UAT 代码并将其放在 UAT 分支上,对于 PROD 也是如此。在从 UAT 到 PROD 进行 PR 时,我想看看两者之间的区别(它们大部分相同,但 UAT 中有一些东西还没有在 PROD 中)。但是 git 说没有什么可比较的,因为它们是不同的历史。这是真的。

有没有办法解决这个问题,以便我可以看到差异并开始通过 git 将代码从 UAT 提升到 PROD?

您的 PROD 代码应该在 main 分支中。然后从 main 创建并检出一个新分支,比方说 import/UAT.

import/UAT 分支上,对现有 UAT 分支中的代码执行文件差异,而不是 git diff。您可能需要将这些文件复制到另一个位置以进行文件比较。我会使用 Beyond Compare 之类的东西。您可以 copy/commit 将这些更改为 import/UAT

现在您将拥有两个环境之间的 git 历史记录。

import/UAT 期间,您可以执行 git diff main --name-only 以查看已更改的文件名列表并从那里开始工作。

更新:

如果您使用好的工具进行文件比较,您可以将所有更改从源 UAT 文件夹批量复制到 import/UAT 上包含您的存储库的文件夹。然后您可以在一个命令中批量添加所有更改。

git add .
git commit -m "UAT changes."

您甚至可以在 import/UAT 签出时尝试将现有的 UAT 文件复制到 repo 文件夹中。 git 很可能会计算出文件的增量和添加,而不管文件的时间戳。