2017-10-19 140 views
0

我有一个项目作为输出几个表。我需要优化它在每个步骤上验证输出表是否相等,或者至少可以说明不同之处。Git分支结果比较

所以我创建了两个分支,这个想法是迭代地修改一个分支中的代码,然后运行两个并在最后比较结果。将第一个分支的最后一个提交的修改应用到第二个分支,再次修改第一个分支,依此类推......

我怎样才能将一个分支的最后修改重新应用到另一个分支,而没有合并之前的提交?

+0

为什么要使用分支?每次提交并'git diff HEAD^... HEAD'。 – Ryan

+0

他们将结果和日志存储在不同的目录中以便于比较 – Gabriel

回答

0

最好的解决方案是简单地保持提交线性首先。如果你想要使用两个分支来执行这个提交行,这是有道理的;但是通过提交两行代码就可以创建不必要的工作。

从评论,我推断你有一些基线配置更改,影响输出目录等。在代码中管理这些配置,以便您需要坚持代码更改以重定向输出是一个设计错误,您遇到的问题是一个症状。通过解决这个问题,你会得到更大的回报。然后,您可以简单地在同一提交中启动两个分支,进行更改并将它们提交给测试分支,运行测试;如果通过,则将该更改合并(使用快进)到主分支中,否则,将测试分支回滚。

但是,如果您决定花一次性努力(而且仍然有这样的设计缺陷等待下一次您想要做的事情时再次启程),那么您可以改为做你正在做的事情,然后从测试分支挑选HEAD提交到主分支。

https://git-scm.com/docs/git-cherry-pick

注意,至少9次了10年,如果我提到的樱桃采摘它称之为最过分推荐的命令饭桶。最接近的相关操作(我更喜欢它们适用的时候)是rebase和squash合并;但在这种情况下,没有人按照你想要的方式工作。对我而言,这是进一步的证据,表明设计不适合开始。

+0

感谢您的回答,您能否提出设计解决方案或需要更多信息?我 – Gabriel

+0

我可能没有足够的信息进入任何真实的细节;但是像输出目录这样的东西可能会被放在一个配置文件中,该文件可以作为构建过程的一部分进行选择/填充,或者在运行时提供。从那里,许多变化是可能的。您可以在源代码控制中保持配置的“测试”和“主要”版本。或者你可以在源代码控制中只保留一个模板,并在git之外提供特定的值。你甚至可以做出相关的路径,并检查主要和测试分开工作树。取决于你的项目 –