注意:这不可能是有人第一次问这个问题。但是,经过搜索之后,我只能找到标题中带有相似词但含义完全不同的问题的答案,因此我放弃了。
如果您发现重复的问题,请关闭该问题并链接到该问题。
背景:假设您正在使用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
上,就像他们没有共同的历史一样。
答案 0 :(得分:1)
仅当一个分支位于另一分支之前时,合并才有意义。这意味着,仅当您在debug_logging
中对master
进行提交时才可以进行合并。您不能使用git merge
进行还原。
您可以使用git revert
。该命令将创建一个新的提交,该提交将有效地撤消您指定的一个或多个提交中的更改。新提交将包含指定提交的反向更改。
您将需要引用要还原的提交。引用提交的最直接方法是通过其SHA哈希。您可以使用git log
找到任何提交的哈希。