1

我的“DEV”机器上有一个 git 存储库。不久前,我将一些代码复制到我的 PROD 机器上。从那时起,我的 DEV 机器中出现了许多提交。但是,我的 PROD 机器上可能有一些临时代码更改从未提交或“退出”。

问题:如何在 DEV 上找到与 PROD 上的代码最接近的提交?

然后我将创建一个分支并合并。目标是将所有内容合并到 1 个分支中。PROD 上有许多文件从未被修改过,所以也许这会更容易,只需搜索所有提交以找到完全匹配的内容。

我使用 git 扩展。

泰。

4

2 回答 2

1

一种选择是用于git bisect搜索您的旧提交,在每个步骤中使用目录差异工具将 git 工作目录与 PROD 进行比较。如果工作目录自您想要保留的 PROD 以来有新的更改,请将其标记为good。如果工作目录有旧版本的文件,而您想要 PROD 版本,请将其标记为bad。最终,您应该找到最接近 PROD 开始位置的提交——从那里创建一个分支,从 PROD 复制过来,一切顺利。

于 2012-05-29T14:13:38.780 回答
0

在没有其他信息的情况下(假设您的 PROD 机器的安装本身不是 git 存储库,这会使这变得非常简单),我可能只是将文件创建时间戳与您的 DEV 存储库的提交历史记录进行比较。大概您的 PROD 机器的代码是在一个狭窄的窗口中复制的。也有可能你在做这个副本时没有提交。只需使用git log在复制时间戳之前找到提交时间戳,然后类似:

git checkout -B new_branch <hash_of_that_commit>    # Checks out 'new_branch' at that commit

接下来,区分 DEV 和 PROD,将 PROD 更改以增量方式或作为批次复制回 DEV。提交每个增量或批次。

那时你有一个可行的主题分支。您可以在闲暇时将其合并或变基回您的主分支。

于 2012-05-29T15:24:39.763 回答