我在git中设置了一个实验分支,但是我正在尝试使用不同的库来实现一些功能的不同实现。我想保留这些记录,作为我自己的方法/库的文档。 我的pre-git本能是评论之前的实验---但是在git(或通常是版本控制)中处理多个实验的最佳方法是什么?
编辑我应该澄清这些通常是一些代码(实际上,部分的功能),也许只有3到10行。例如,在getenv("HOME")
上使用wordexp
与~
;使用strcpy
与memcpy
。所以它们可能有很多,即使是相对简单的功能,也可以选择每一步。
作为第一次尝试,我为每个版本制作了一个不同的分支 - 但这将很快无法管理。
我目前的猜测是:
然后我可以查看日志以找到特定的实验。 EDIT 日志条目将被评论并注明日期。
(实际上我可能想在第二个实验时注释掉第一个实验,所以我可以轻松地引用它 - 然后在提交第二个实验之前删除它。)
这是一个很好的工作流程吗?有更好/标准的方法吗?非常感谢您分享您的经验!
答案 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
或不同的存储库,以便您拥有实验的冗余副本,以防万一......