要在集市上创建一个分支,我可以做两件事:
- 签出主干,进行修改,本地提交,然后将我的版本推送到 MyProject/MyBranch
或者
- 创建 MyProject/MyBranch 并将我的结帐切换到新分支,然后进行修改和提交。
我的问题:
- 这两个操作是否产生相同的结果?
- 关于分支的最佳实践是什么?
要在集市上创建一个分支,我可以做两件事:
或者
我的问题:
我不确定当推送带有本地提交的结帐时会发生什么,所以我试了一下。
事实证明,在这两种情况下,您最终都会得到以下历史记录:
树干:
分支:
但是,首先分支并使用分支结帐是一种更好的方法。如果您有一个带有本地提交的结帐并且在提交之前bzr update
您将无法做到这一点。bzr push
其次,如果你有一个带有本地提交的主干结帐,“bzr push”创建分支,然后尝试“bzr switch”到分支,你首先必须提交或恢复以避免“不能切换为本地提交”在结帐时发现”错误。
编辑:此答案假设与问题描述的设置不同,因为问题的初始表述尚不清楚。
您描述的两个操作不会产生相同的结果。差异是否有意义在很大程度上取决于您的环境。例如,无论您是与其他开发人员合作还是独自工作。
在第一种情况下,您有一个带有工作树的分支。当您推送到一个还不是分支的位置时,您将创建一个与初始分支具有相同历史记录的新分支。
在您的第二个示例中,您似乎正在使用现有的结帐。我不确定您对创建分支文件夹的意思。
您是决定使用带有工作树的分支还是使用结帐,这实际上取决于您想要做什么。如果您希望将同一项目的许多功能彼此隔离,那么使用结帐似乎很有意义。在这种情况下,工作树只在磁盘上存储一次,分支只跟踪每个特性的修改。在某些时候,您可能希望将这些分支中的一个或多个合并在一起,以将这些功能组合回一个分支。
另一方面,如果你有两个不同的项目,那么有两个分支可能是有意义的,每个分支都有自己的工作树。
阅读Bazaar Workflows 文档,可能bzr help checkouts
会bzr help branches
帮助您确定哪种方法最适合您的情况。
要回答您的第一个问题,我认为它不会产生相同的结果。
您的第一个选项将产生此历史记录:
树干:
分支:
即主干和分支将具有相同的历史。
您的第二个选项将产生此历史记录:
树干:
分支:
即你的新提交只会出现在分支上。要使用这种方法将其放在主干上,您必须将分支合并到主干中。
最佳实践将取决于您想要完成的任务。如果您正在创建一个分支以提交一些您不希望在主干上进行的更改,那么首先分支。