实验分支:如何记录多个替代实现?

时间:2013-05-17 18:29:52

标签: git version-control

我在git中设置了一个实验分支,但是我正在尝试使用不同的库来实现一些功能的不同实现。我想保留这些记录,作为我自己的方法/库的文档。 我的pre-git本能是评论之前的实验---但是在git(或通常是版本控制)中处理多个实验的最佳方法是什么?

编辑我应该澄清这些通常是一些代码(实际上,部分的功能),也许只有3到10行。例如,在getenv("HOME")上使用wordexp~;使用strcpymemcpy。所以它们可能有很多,即使是相对简单的功能,也可以选择每一步。

作为第一次尝试,我为每个版本制作了一个不同的分支 - 但这将很快无法管理。

我目前的猜测是:

  1. 实施第一个实验
  2. 提交
  3. 删除第一个实验
  4. 实施第二个实验
  5. 提交
  6. 然后我可以查看日志以找到特定的实验。 EDIT 日志条目将被评论并注明日期。

    (实际上我可能想在第二个实验时注释掉第一个实验,所以我可以轻松地引用它 - 然后在提交第二个实验之前删除它。)

    这是一个很好的工作流程吗?有更好/标准的方法吗?非常感谢您分享您的经验!

2 个答案:

答案 0 :(得分:2)

使用分支是正确的方法。它不应该变得难以管理。这正是git闪耀的地方。对提交进行分支,使用一个名称来解释正在发生的事情(例如git checkout -b featureX_fooLib),对此进行处理,然后分支您最初为下一次测试分支的相同提交(例如git checkout -b featureX_barLib a41f38),以及在下一个例子中工作。在开始任何这些分支之前,您还可以标记您所在的位置 - git tag featureX_libTestsBase - 然后为每个新分支使用该分支作为新的起点 - git checkout -b featureX_bazLib featureX_libTestsBase

我不希望在我的代码中有其他地方残留,所以我不想在每个新分支中提交旧代码的注释版本,但这并不意味着我不会这样做;我只是不希望它成为barLib提交的一部分。你可以做的一件事是 - 从fooLib分支的工作,最终提交,保存文件的副本,不要将它添加到git。现在,当您签出新的barLib分支时,它将作为未跟踪的文件存在。您也可以 - 从新的barLib分支 - 只需使用git show featureX_fooLib:filename >filename来压缩该提交的文件版本。现在你可以进去,注释掉那一点,开始工作,只需为每个新提交补丁添加新东西。这可能是两个世界中最好的。

答案 1 :(得分:1)

每个实验保留一个分支并给它们合适的名称,甚至可以“命名”它们(即git checkout -b experiments/testing-algorithm-A)。最初,这些分支将只存在于您的本地存储库中,但您可以将它们推送到origin或不同的存储库,以便您拥有实验的冗余副本,以防万一......