如何将代码与Git提交匹配,并创建分支?

时间:2012-05-29 12:08:42

标签: git merge git-extensions git-commit

我的“DEV”机器上有一个git存储库。不久前,我将一些代码复制到我的PROD机器上。从那以后,我的DEV机器中有很多提交。但是,我的PROD机器上可能有一些从未提交或“Brached”出现的广告代码更改。

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

然后我将创建一个分支并合并。目标是将all合并为1个分支。 PROD上有许多文件从未被修改过,因此可能会更容易,只需搜索所有提交即可完全匹配。

我使用git-extensions。

TY。

2 个答案:

答案 0 :(得分:1)

一种选择是使用git bisect搜索旧提交,在每一步使用目录差异工具将git工作目录与PROD进行比较。如果工作目录在您要保留的PROD之后有新的更改,请将其标记为good。如果工作目录包含旧版本的文件而您想要PROD版本,请将其标记为bad。最终你应该找到最接近PROD开始位置的提交 - 从那里创建一个分支,从PROD复制并且你很高兴。

答案 1 :(得分:0)

没有其他信息(并且假设您的PROD机器安装不是git存储库本身,这会使这很简单),我可能只是将文件创建时间戳与您的DEV repo&进行比较#39;提交历史记录。大概是你的PROD机器的代码被复制在一个狭窄的窗口中。在您复制此文件时,您也可能没有做出承诺。只需使用git log在复制时间戳之前找到提交时间戳,然后执行以下操作:

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

接下来,diff DEV和PROD,复制PROD以递增方式或批量方式更改回DEV。提交每个增量或批次。

此时你有一个可行的主题分支。您可以随意将其合并或重新绑定到主分支中。