2009-10-29 46 views
2

最近我一直在玩Git來掌握分佈式版本控制。現在我正在查看Bazaar,但無法弄清楚如何創建一個本地分支,也就是說,當我想要提交更改時,我不必推送到該分支。使用Git,我會做Bazaar的當地分支機構?

git branch branch_name

git checkout -b branch_name

然後我可以在我的本地分行工作,提交更改,因爲我去,而不必更改推到遠程回購。當我通過分支時,我可以將它合併到我的本地主分支。如果我願意,我可以將這些更改推送到遠程回購。

這是可能與Bazaar? Bazaar看起來更像SVN,分支只是單獨的目錄,所以也許不是。

回答

4

是的,你絕對可以做到這一點。

比方說,有一個在BZR + SSH遠程倉庫://foo.com/repo/mainline

您可以通過執行創建本地分支:

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

現在,您可以進行更改到local_branch並提交它們,並且這些更改僅在該本地目錄中。例如:

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

這將只在本地分支中添加foo。

+7

我認爲「cd」部分驗證了「分支只是單獨的目錄」部分的問題。如果我在更改分支時必須重新配置我的工具,則分支不太有用。 – Dustin 2009-10-29 21:08:39

2

bzr與git的區別在於你不能切換工作目錄所代表的分支。但是,您可以從工作目錄中進行分支,而不必從遠程存儲庫進行分支。因此,而不是

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

你會做

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

「bzr與git的區別在於你不能切換工作目錄代表的分支。」這是否意味着bzr項目通常在trunk /和branches /子目錄中設置,就像典型的SVN項目一樣? – ThisSuitIsBlackNot 2009-10-29 19:03:13

+0

排序,但不是與SVN關聯的嚴格意義上的目錄不是實際存儲庫的一部分。相反,用戶只需在某處在線發佈他們的分支,其他人就可以訪問它,從中合併等等。如果一個公共位置正用於託管分支(如啓動板),那麼您將可以輕鬆地看到所有已發佈的分支都與一個項目相關聯。即使不同的分支彼此瞭解(通過承諾的歷史和他們從哪個存儲庫分支出來的知識),它們都是他們自己獨特的存儲庫。 – jamessan 2009-10-29 19:37:10

3

如果你設置了你的資料庫的正確方法,你可以以類似的方式與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 

這將創建一個結構,像這樣:

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

如果你想分行,你可以做到以下幾點:

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

,現在你會在some-feature分支,它將與主線相同。

2

老問題,但似乎colocated branches是今天的方式。 Bzr包含一個帶有各種便利功能的plugin,其中包括用於創建支持分支的存儲庫的colo-init以及用於實際使用/創建分支的colo-branch(我還沒有廣泛使用這些功能,所以我可能會有點混亂..)

+0

詳細的說明可以在這裏找到(https://wiki.openstack.org/wiki/ColocatedBranches)。 – 2013-09-13 16:50:53