可以将我的程序的 "old" 版本保留在分支中吗?
Is it ok to keep the "old" version of my program in a branch?
我在 master
分支上维护一个版本为“1.x”的程序。现在我正计划对其进行重大重写,因此大部分文件将 deleted/replaced 添加新文件,但主要功能将保持不变。我想称它为版本“2.x”。
我不想为它创建一个新的存储库(例如,我会丢失我想在 2.x 中解决的 1.x 的所有未解决问题)。相反,我想:
- 将 master 分支到临时
2.x-dev
并开始在那里进行破坏性更改
- 当“2.x”准备就绪时,从当前主节点创建一个分支
1.x
。
- 将
2.x-dev
合并到 master
。
最后,master 会突然变成程序的“2.x”版本,而“1.x”会留在永远不会合并到的分支上大师.
这是一个好的做法还是我应该换一种方式?
编辑:我不是 100% 确定合并后我不会对 1.x
做进一步的更改。示例 1.x 可能会保留某种追溯兼容性。但它不会收到任何新功能。
您是否计划进一步开发您的 1.x
产品线?如果是这样,一个分支是完全正确的。 (由于 DAG 的性质——有向无环图——“分叉”和“分支”之间仅存在语义差异. 将分支简单地视为不同服务器上的“远程分支”)。
如果1.x
只是历史记录,不会再被修改,请改用标签(命令:git tag
)。
但你甚至可以将两者结合起来:
- 创建一个标签
1.0
以标记您最新 1.x 发布的特定版本。
- 如果您认为需要做进一步的工作,请从标签创建新分支:
git checkout -b 1.x 1.0
。
如果您发布新的 1.x 版本,只需再次标记您分支的最新状态:git tag 1.1 1.x
我在 master
分支上维护一个版本为“1.x”的程序。现在我正计划对其进行重大重写,因此大部分文件将 deleted/replaced 添加新文件,但主要功能将保持不变。我想称它为版本“2.x”。
我不想为它创建一个新的存储库(例如,我会丢失我想在 2.x 中解决的 1.x 的所有未解决问题)。相反,我想:
- 将 master 分支到临时
2.x-dev
并开始在那里进行破坏性更改 - 当“2.x”准备就绪时,从当前主节点创建一个分支
1.x
。 - 将
2.x-dev
合并到master
。
最后,master 会突然变成程序的“2.x”版本,而“1.x”会留在永远不会合并到的分支上大师.
这是一个好的做法还是我应该换一种方式?
编辑:我不是 100% 确定合并后我不会对 1.x
做进一步的更改。示例 1.x 可能会保留某种追溯兼容性。但它不会收到任何新功能。
您是否计划进一步开发您的 1.x
产品线?如果是这样,一个分支是完全正确的。 (由于 DAG 的性质——有向无环图——“分叉”和“分支”之间仅存在语义差异. 将分支简单地视为不同服务器上的“远程分支”)。
如果1.x
只是历史记录,不会再被修改,请改用标签(命令:git tag
)。
但你甚至可以将两者结合起来:
- 创建一个标签
1.0
以标记您最新 1.x 发布的特定版本。 - 如果您认为需要做进一步的工作,请从标签创建新分支:
git checkout -b 1.x 1.0
。
如果您发布新的 1.x 版本,只需再次标记您分支的最新状态:git tag 1.1 1.x