2011-02-24 46 views
18

我對git比較陌生,並且試圖以正確的方式設置我的存儲庫。Git - 將分支存儲在單獨的本地目錄中

基本上我的應用程序是一個平臺,所以這個平臺的實現基於master分支,但對這些文件以及一些額外的文件有一些小的修改。

我試着將它設置爲分支,所以我有一個master分支,implementation_1implementation_2

但據我所知,這意味着在本地所有的分支都存儲在一個目錄中,他們的分離只是通過git。

我想要的是有3個本地目錄master,imp_1imp_2。如果我對imp_1目錄中的某個核心文件進行了更改,我希望能夠將該更改合併到master分支中,然後從那裏進入imp_2

我開始認爲這些需要是3個不同的存儲庫(實現是分支的核心)。這是要走的路嗎?在那種情況下,我將如何處理上述情況?

+1

'git-new-workdir'可能會訣竅(請參閱http://thejspr.com/blog/work-on-multiple-branches-with-git-workdir/) – user456584 2014-06-05 21:48:19

回答

17

分公司在Git的頭等公民,這意味着有沒有「模擬」作爲老年VCS(SVN,CVS,...)

如果你真的需要三個不同的目錄中,因爲要像樹枝有三個不同的開發環境,使3個克隆:

  • 一個在一個叫master
  • 一個在一個名爲imp_1
  • 處於一個目錄目錄目錄稱爲imp_2

但要真正理解分支,你可以閱讀「Pros and cons of different branching models in DVCS」。


或者,因爲Git的2.5(2015年7月,任擇議定書的問題,後4年),我在Multiple working directories with Git?的相關詳細,使用git worktree

這將是一個克隆,多個文件夾(每個分支一個)。
使用Git 2.7+,您可以然後列出這些文件夾:

$ git worktree list 
/path/to/bare-source   (bare) 
/path/to/linked-worktree  abcd1234 [master] 
/path/to/other-linked-worktree 1234abc (detached HEAD) 
+0

有沒有任何優點和缺點3不同的目錄與保持3個分支在同一個本地回購? – 2012-09-23 16:22:35

+3

@ lysergic-acid主要的專業是你可以同時在每個分支上並行工作,因爲每個分支都被克隆在自己的目錄中。 – VonC 2012-09-23 16:42:45

+0

是的,但是使用單個目錄有問題嗎?例如,假設我製作了一個實驗分支來測試某些東西,並且在工作樹中有一些未提交的文件,我是否可以自由簽出另一個分支以繼續主線工作? (也許這不是最好的例子,但我想看看是否有些東西可能會限制使用單個目錄)。 – 2012-09-24 04:11:19

6

,您可以創建存儲庫的三個克隆和那些之間的合併。 git中的叉子和它們合併的方式沒有什麼不同。你可以很容易做到:

git merge ../master 
git pull ../imp_2 

本地克隆時,git會硬連接的對象,甚至節省磁盤空間

1

你可以做到這一點使用git worktree這是introduced in Git 2.5, circa July 2015

git clone -b master <repo> master 
cd master 

# checking out implementation_1 in ../imp_1 
git worktree add ../imp_1 implementation_1 

# creating branch implementation_2 at master~2 as you check it out in ../imp2: 
git worktree add -b implementation_2 ../imp_2 master~2 

而且瞧!你完成了。

使用此設置,您將只有一個.git文件夾(在master/.git中)。請注意,任何分支都可以一次檢出一個工作樹。

相關問題