我是 Bazaar 的新手,来自 Subversion 和 git 的背景。我以为我已经掌握了一些基本概念,但是在我的第一个主要提交中已经遇到了绊脚石。
该项目托管在 Launchpad 上。我用bzr branch
. 我进行了更改,添加了新文件,重命名了其他文件。在此期间,团队中的另一个人承诺并推动了他们的更改。此时提交历史看起来像这样:
3. Team Member A
2. Me (trivial commit of .bzrignore)
1. Original commit
今天早上我bzr commit
在本地进行了更改。提交号报告为 3,我假设(错误地)在我与服务器同步时会进行协调。当我这样做时,bzr pull
我收到了这条消息:
Using saved parent location: bzr+ssh://bazaar.launchpad.net/... bzr: ERROR: These branches have diverged. Use the missing command to see how. Use the merge command to reconcile them.
我做到了bzr merge
。没有发现冲突,但在我的本地分支中留下了三个文件进行修改。我检查并提交了带有评论的那些,它被报告为提交 4。然后我做了一个bzr push
,它没有报告任何错误。
现在提交历史 ( bzr log --include-merges
) 看起来像这样:
4. My merge commit
2.1.1 Team Member A
3. My commit this morning
2. My .bzrignore commit
1. Original commit
这里非常希望保持主干线序列化并避免这些合并气泡。(令人讨厌的是,Launchpad 没有显示 2.1.1 提交,看起来像是我重写了它。)在这种情况下,避免这些气泡的最佳工作流程是什么?我应该先拉吗?我担心必须将其他人的代码合并到我本地未提交的更改中。
此外,虽然 rebase 在 git 中很常用,但它似乎在 Bazaar 世界中并未得到普遍认可。如果我们可以避免使用 bzr-rebase 插件,那就太好了。