“重播”旧提交而不是新提交

时间:2019-08-12 20:48:32

标签: git

我们有一个网站,我们使用git开发其代码库。当分支合并到master中时,即开始生产。

我们遇到了开发featureA并将其部署的情况。不幸的是,部署中存在一些问题,我们不得不使用Web主机板载还原系统来回滚网站。

此站点是Drupal网站,并且某些文件充当“代码中的配置”。因此,我们将生产的配置文件导出到名为prod-config的单独分支中。

因此,在还原后,由于生产对其配置进行了更改-实际上是部署前的设置,因此这些更改在prod-config分支中显示为新提交。

这有效地撤消了featureA分支中的提交,其中包括对配置文件的更新。所以现在,分支featureA已完全合并到master中,但是我要重新部署的配置文件更改在新提交中被覆盖。

重播或重做在新提交中有效撤消的旧提交的“正确”方法是什么?

当然,我可以在所需状态下签出提交,将配置文件复制过来,然后提交那些更改。但是我想知道是否有一种使用git命令来完成我现在需要做的事情的方法。

2 个答案:

答案 0 :(得分:1)

  

重播或重做在新提交中有效撤消的旧提交的“正确”方法是什么?

一个人可以使用git checkout <commit> <filename>从先前的提交中还原特定文件,然后将还原的配置文件添加到新的提交中。

答案 1 :(得分:0)

在评论中,您解释了您想要进行任何特定的HEAD提交吗?

要执行此操作,只需要将您选择的RESET分支重置为该提交。这样,选定的提交将成为当前分支的头。

git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]

之后,您可以push --force-with-lease更新远程分支。

此处有更多详细信息:https://git-scm.com/docs/git-reset