Version control 我应该使用按钮或开关在集市中创建分支吗?

Version control 我应该使用按钮或开关在集市中创建分支吗?,version-control,branch,bazaar,tortoisebzr,Version Control,Branch,Bazaar,Tortoisebzr,要在bazaar创建分支,我可以做两件事: 签出trunck,进行修改,本地提交,然后将我的版本推送到MyProject/MyBranch 或 创建MyProject/MyBranch并将我的签出切换到新分支,然后进行修改和提交 我的问题是: 这两个操作是否产生相同的结果 分支机构的最佳实践是什么 编辑:此答案假设的设置与问题描述的不同,因为问题的初始表述不清楚 您描述的两个操作不会产生相同的结果。差异是否有意义很大程度上取决于您的环境。例如,无论您是与其他开发人员合作还是独自工作 在

要在bazaar创建分支,我可以做两件事:

  • 签出trunck,进行修改,本地提交,然后将我的版本推送到MyProject/MyBranch

  • 创建MyProject/MyBranch并将我的签出切换到新分支,然后进行修改和提交
我的问题是:

  • 这两个操作是否产生相同的结果
  • 分支机构的最佳实践是什么

编辑:此答案假设的设置与问题描述的不同,因为问题的初始表述不清楚

您描述的两个操作不会产生相同的结果。差异是否有意义很大程度上取决于您的环境。例如,无论您是与其他开发人员合作还是独自工作

在第一种情况下,你有一个分支和一棵工作的树。当您推送到一个尚未创建分支的位置时,您将创建一个与初始分支具有相同历史记录的新分支

在第二个示例中,您似乎正在使用现有的签出。我不知道你说的创建分支文件夹是什么意思

您是决定使用带有工作树的分支还是签出,这取决于您想做什么。如果同一个项目中有一组功能需要彼此隔离,那么使用签出似乎是有意义的。在这种情况下,工作树只在磁盘上存储一次,分支只跟踪每个特性的修改。在某个时刻,您可能希望将这些分支中的一个或多个合并到一起,以将这些功能合并回单个分支

另一方面,如果您有两个不同的项目,那么最好有两个分支,每个分支都有自己的工作树


阅读,
bzr帮助签出
bzr帮助分支
可能会帮助您决定哪种方法最适合您的情况。

回答您的第一个问题,我认为不会产生相同的结果

您的第一个选项将生成以下历史记录:

主干:

  • 新提交
  • 旧承诺
  • 等等
  • 分支机构:

  • 新提交
  • 旧承诺
  • 等等
  • i、 e.主干和分支将具有相同的历史

    您的第二个选项将生成以下历史记录:

    主干:

  • 旧承诺
  • 等等
  • 分支机构:

  • 新提交
  • 旧承诺
  • 等等
  • i、 e.您的新提交将仅出现在分支上。要使用此方法将其放到主干上,必须将分支合并到主干中


    最佳实践将取决于您想要实现的目标。如果您正在进行分支以提交一些您还不想在主干上进行的更改,那么请先进行分支。

    我不确定在推送带有本地提交的签出时会发生什么,所以我尝试了一下

    事实证明,在这两种情况下,您最终都会遇到如下历史:

    主干:

  • 旧承诺
  • 等等
  • 分支机构:

  • 新提交
  • 旧承诺
  • 等等
  • 然而,首先进行分支,然后对分支进行签出是一种更好的方法。如果使用本地提交进行签出并执行
    bzr更新
    ,则在提交之前将无法
    bzr推送


    其次,如果您有一个带有本地提交的主干签出,“bzr push”来创建分支,然后尝试“bzr switch”到分支,那么您首先必须提交或还原以避免“无法切换为签出中找到的本地提交”错误。

    它并没有真正回答第一个问题。我更新了这个问题,以解释我是从主干的签出命令开始的。推送正是bzr文档中所写的:这实际上是不正确的,因为第一个场景是在主干的签出中创建本地提交。这在问题的最初表述中并不清楚。您的回答在这种情况下是有意义的。您可以通过使用--store选项(例如bzr switch--store)避免“无法切换为签出中找到的本地提交”警告