关于git:义卖市场的当地分支机构?

Local branches with Bazaar?

最近,我一直在与Git一起玩耍,以了解分布式版本控制。 现在我正在查看Bazaar,但无法弄清楚如何创建本地分支,即当我要提交更改时不必将其推送到的分支。 有了Git,我会做

git branch branch_name

要么

git checkout -b branch_name

然后,我可以在本地分支机构工作,随时进行更改,而不必将更改推送到远程存储库。 当我完成分支后,可以将其合并到本地主分支。 如果需要,我可以将这些更改推送到远程仓库中。

集市有可能吗? Bazaar似乎更像SVN,分支只是单独的目录,所以也许不是。


是的,您绝对可以做到。

假设在bzr + ssh://foo.com/repo/mainline有一个远程存储库

您可以通过执行以下操作来创建本地分支:

1
bzr branch bzr+ssh://foo.com/repo/mainline local_branch

现在,您可以对local_branch进行更改并将其提交,这些更改仅在该本地目录中。例如。:

1
2
3
4
cd local_branch
touch foo
bzr add foo
bzr commit -m"Add foo."

那只会在本地分支中添加foo。


如果您以正确的方式设置存储库,则可以采用与git类似的方式进行工作。

1
2
3
4
5
6
cd ~/dev
bzr init-repo
bzr reconfigure --with-no-trees
mkdir branches
bzr branch bzr+ssh://foo.com/repo branches/mainline
bzr checkout --lightweight branches/mainline working

这将创建如下结构:

1
2
3
4
5
6
/dev
    /branches
        /mainline
        <other branches go here>
    /working
        <this is your working tree>

如果要创建分支,可以执行以下操作:

1
2
cd ~/dev/checkout
bzr branch --switch ~/dev/branches/mainline ~/dev/branches/some-feature

现在您将进入some-feature分支,该分支与主线在同一点。


这是一个古老的问题,但似乎并置分支机构是当今的发展之路。 Bzr包含一个具有各种便利功能的插件,其中包括colo-init用于创建启用共处分支的存储库,而colo-branch用于实际使用/创建分支(我尚未广泛使用这些功能,因此我可能对此有一点了解)错杂..)


bzr与git的不同之处在于,您不能切换工作目录所代表的分支。但是,您可以从工作目录分支,而不必从远程存储库分支。所以代替

1
2
3
git clone git+ssh://foo.com/repo
cd repo
git checkout -b new_branch

你会做

1
2
bzr branch bzr+ssh://foo.com/repo
bzr branch repo new_branch