如何使用git merge还原主文件? (即还原VIA合并)

时间:2018-08-17 22:00:20

标签: git merge

注意:这不可能是有人第一次问这个问题。但是,经过搜索之后,我只能找到标题中带有相似词但含义完全不同的问题的答案,因此我放弃了。

如果您发现重复的问题,请关闭该问题并链接到该问题。

背景:假设您正在使用master,并且具有许多调试日志记录功能。您想与其他人共享您的代码,但是他们讨厌您的调试日志。

因此,不想分散他们的注意力,首先创建一个新分支*,debug_logging,其中包含旧的(好的)版本代码以及所有调试日志。然后,您从master中删除调试日志。一旦其他人看到了您的工作并对其感到满意,也许可以帮助您进行一些更改,则无需从他们隐藏调试日志,您可以将调试日志放回主服务器。问题是如何做到这一点。

*是的,理想的做法是使非主分支成为删除了日志的分支,但是此问题之外的一些考虑因素使之不可能。

  

问题::如果要还原调试日志,请尝试将debug_logging合并到master上。但是由于debug_logging在历史上在技术上落后于master,因此git checkout master; git merge debug_logging什么也不做(一切都是最新的)。

     

在合并文件内容的意义上,如何将debug_logging合并到master上(即重新添加调试日志,同时保留对master所做的任何添加)而调试日志消失了)?

     

如果可以将合并文件同时应用于存储库中两个分支中的所有文件,则这看起来像merge-file。基本上,我希望Git不再表现聪明,将debug_logging合并到master上,就像他们没有共同的历史一样。

1 个答案:

答案 0 :(得分:1)

仅当一个分支位于另一分支之前时,合并才有意义。这意味着,仅当您在debug_logging中对master进行提交时才可以进行合并。您不能使用git merge进行还原。

您可以使用git revert。该命令将创建一个新的提交,该提交将有效地撤消您指定的一个或多个提交中的更改。新提交将包含指定提交的反向更改。

您将需要引用要还原的提交。引用提交的最直接方法是通过其SHA哈希。您可以使用git log找到任何提交的哈希。