具有数据更新的建模任务的Git工作流

具有数据更新的建模任务的Git工作流,git,bitbucket,workflow,branching-and-merging,Git,Bitbucket,Workflow,Branching And Merging,我希望借助git开始一项建模/预测任务。我想建立一个git架构来促进这一点,但我遇到了一些问题 目标:在区域/次区域分支(需要人工修订,人工修订=提交)中的建模任务结束时,合并到master,以使所有预测可用于审查其运行的代码和数据集版本。如果以后需要进行修订,建模者应该能够从准确的预测完成时开始进行分支,并使用正确(可能更旧)版本的代码进行处理 问题:数据和代码版本可能会更改。较旧的模型运行可能与较旧的代码/数据不兼容(例如,在区域1,可能使用代码版本1和数据版本2,但在区域2,代码4和数据6

我希望借助git开始一项建模/预测任务。我想建立一个git架构来促进这一点,但我遇到了一些问题

目标:在区域/次区域分支(需要人工修订,人工修订=提交)中的建模任务结束时,合并到master,以使所有预测可用于审查其运行的代码和数据集版本。如果以后需要进行修订,建模者应该能够从准确的预测完成时开始进行分支,并使用正确(可能更旧)版本的代码进行处理

问题:数据和代码版本可能会更改。较旧的模型运行可能与较旧的代码/数据不兼容(例如,在区域1,可能使用代码版本1和数据版本2,但在区域2,代码4和数据6),并且在项目结束时,必须能够再现预测

我的解决方案:这似乎与git的理念背道而驰,但每次有数据集或代码更新时,都要将其放在master中,并在文件名后面附加一个版本号。让区域/子区域分支并标记每个预测完成提交,然后当预测完成时,合并到主文件,并添加另一个文件,说明代码和数据运行的版本。如果需要进行修订,请找到完成标记,并使用正确版本的代码重新建模,合并回区域,然后向下合并到主代码。如果需要复制模型,请使用正确的代码/数据(来自创建的附加文件)运行模型

这是使用git跟踪此过程的最佳方法,还是有更好/更简单的方法?这一过程是否有效,或者是否会因此产生意外问题

数据和代码版本可能会更改

这意味着您有两组文件,具有强耦合,但在该耦合中有它们自己的演化

这是一项工作:您将代码和数据分别放在各自独立的git存储库中,并在主父repo中为每个代码和数据引用一个固定的SHA1:

parent/
  code/
  data/
这样,从父回购中,您可以创建一个分支,其中
code
数据都将发生变化。当预测完成时,您要合并到
master
(在parent中)的是
code
数据的最新SHA1

子模块的兴趣在于您在父回购中记录数据
repo
的确切SHA1,该数据应与
code
repo兼容。

您完全可以避免任何“黑客”行为,如重命名文件。

当您说“在父级回购中记录确切的SHA1…”这是否意味着为了在以后运行任何旧预测,您需要git reset--soft to the SHA1?@RayVelcoro您将父级重置为您想要的SHA1,然后它会将子模块重置为它们各自的SHA1,正如父提交所记录的那样。那些SHA1是gitlink:参见和