我的“DEV”机器上有一个 git 存储库。不久前,我将一些代码复制到我的 PROD 机器上。从那时起,我的 DEV 机器中出现了许多提交。但是,我的 PROD 机器上可能有一些临时代码更改从未提交或“退出”。
问题:如何在 DEV 上找到与 PROD 上的代码最接近的提交?
然后我将创建一个分支并合并。目标是将所有内容合并到 1 个分支中。PROD 上有许多文件从未被修改过,所以也许这会更容易,只需搜索所有提交以找到完全匹配的内容。
我使用 git 扩展。
泰。
我的“DEV”机器上有一个 git 存储库。不久前,我将一些代码复制到我的 PROD 机器上。从那时起,我的 DEV 机器中出现了许多提交。但是,我的 PROD 机器上可能有一些临时代码更改从未提交或“退出”。
问题:如何在 DEV 上找到与 PROD 上的代码最接近的提交?
然后我将创建一个分支并合并。目标是将所有内容合并到 1 个分支中。PROD 上有许多文件从未被修改过,所以也许这会更容易,只需搜索所有提交以找到完全匹配的内容。
我使用 git 扩展。
泰。
一种选择是用于git bisect
搜索您的旧提交,在每个步骤中使用目录差异工具将 git 工作目录与 PROD 进行比较。如果工作目录自您想要保留的 PROD 以来有新的更改,请将其标记为good
。如果工作目录有旧版本的文件,而您想要 PROD 版本,请将其标记为bad
。最终,您应该找到最接近 PROD 开始位置的提交——从那里创建一个分支,从 PROD 复制过来,一切顺利。
在没有其他信息的情况下(假设您的 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。提交每个增量或批次。
那时你有一个可行的主题分支。您可以在闲暇时将其合并或变基回您的主分支。