我们有一个网站,我们使用git开发其代码库。当分支合并到master
中时,即开始生产。
我们遇到了开发featureA
并将其部署的情况。不幸的是,部署中存在一些问题,我们不得不使用Web主机板载还原系统来回滚网站。
此站点是Drupal网站,并且某些文件充当“代码中的配置”。因此,我们将生产的配置文件导出到名为prod-config
的单独分支中。
因此,在还原后,由于生产对其配置进行了更改-实际上是部署前的设置,因此这些更改在prod-config
分支中显示为新提交。
这有效地撤消了featureA
分支中的提交,其中包括对配置文件的更新。所以现在,分支featureA
已完全合并到master
中,但是我要重新部署的配置文件更改在新提交中被覆盖。
重播或重做在新提交中有效撤消的旧提交的“正确”方法是什么?
当然,我可以在所需状态下签出提交,将配置文件复制过来,然后提交那些更改。但是我想知道是否有一种使用git命令来完成我现在需要做的事情的方法。
答案 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