我有一个项目给出几个表的输出。我需要优化它验证输出表相等的每一步或至少可以解释差异。
所以我创建了两个分支,这个想法是在一个分支中迭代地修改代码,然后运行两个分支并在最后比较结果。将第一个分支的最后一次提交的修改应用到第二个分支,再次修改第一个分支,依此类推......
如何在不合并先前提交的情况下将一个分支的最后修改重新应用到另一个分支?
答案 0 :(得分:0)
最好的解决方案是首先简单地保持提交的线性。如果你想使用两个分支走这一行提交,这是有道理的;但是通过两行提交,你会创造出不必要的工作。
从评论中,我推断您有一些基线配置更改,影响输出目录等。在代码中管理这些配置,以便您需要将代码更改保留为重定向输出是一个设计错误,而您在这里面临的问题是一个症状。通过解决这个问题,你可以获得更多的回报。然后你可以简单地在同一个提交中启动两个分支,进行更改并将它们提交给测试分支,运行测试;如果它通过,则将更改合并(使用快进)到主分支,如果没有,则将测试分支回滚。
但是,如果你决定花一次性的努力(并且仍然有这个设计缺陷等待你下次想要做某事时绊倒你),那么你可以改为做你所做的事情。重新做,然后从测试分支中挑选HEAD
提交到主分支。
https://git-scm.com/docs/git-cherry-pick
请注意,至少9次中有10次,如果我提到樱桃挑选它在git中称之为最过度推荐的命令。最接近的相关操作(我喜欢它们适用时)是rebase和squash merge;但在这种情况下,两者都不会像你想要的那样工作。对我来说,这进一步证明了设计开始时是不对的。