Local branches with Bazaar?

匿名 (未验证) 提交于 2019-12-03 07:50:05

问题:

I've been playing around with Git recently to get a grasp of distributed version control. Now I'm looking at Bazaar, but can't figure out how to make a local branch, i.e. a branch that I do not have to push to when I want to commit changes. With Git, I would do

git branch branch_name

or

git checkout -b branch_name

I can then work in my local branch, committing changes as I go, without having to push changes to a remote repo. When I'm through with the branch, I can merge it to my local master branch. If I want, I can then push those changes to the remote repo.

Is this possible with Bazaar? Bazaar seems much more like SVN, with branches just being separate directories, so maybe not.

回答1:

Yes, you definitely can do that.

Let's say there's a remote repository at bzr+ssh://foo.com/repo/mainline

You can create a local branch by doing:

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

Now, you can make changes to the local_branch and commit them, and those changes are only in that local directory. e.g.:

cd local_branch touch foo bzr add foo bzr commit -m "Add foo." 

That will add foo only in the local branch.



回答2:

If you set up your repository the correct way, you can work in a similar fashion to git.

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 

This will create a structure like so:

/dev     /branches         /mainline         <other branches go here>     /working         <this is your working tree> 

And if you want to make branches, you can do the following:

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

and now you'll be in the some-feature branch, which will be at the same point as mainline.



回答3:

bzr differs from git in that you can't switch the branch represented by the working directory. You can branch from your working directory, though, instead of having to branch from the remote repository. So instead of

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

you would do

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


回答4:

Old question, but it appears that colocated branches are the way to go for this nowadays. Bzr includes a plugin with various convenience functions, including colo-init for creating colocated-branch-enabled repositories and colo-branch for actually using/creating branches (I have not made extensive use of these features yet, so I may have this a bit jumbled..)



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!