2012-01-08 112 views
10

我想維護兩個不同的git回購。回購應該保持在同一個根目錄下。如何實現它?在同一個目錄中的兩個不同的Git回購

我願意的是:管理兩個略有不同的倉庫。我可以在同一個文件夾中有兩個完全不同的回購站嗎?

git --work-tree=where/my/code/is --git-dir=some/path/to/my/.git status 

這將讓你有2個獨立的回購協議共享相同的:

謝謝關心:)

+0

[在一個目錄中的多個Git存儲庫(可能重複http://stackoverflow.com/questions/2519446/multiple-git-repositories- in-one-directory) – 2012-01-08 15:41:12

+0

而[here](http://stackoverflow.com/questions/2065559/using-two-git-repos-in-one-folder)和[here](http:// stackoverflow。 com/questions/436125/two-git-repositories-in-one-directory)和[here](http://grahamc.com/blog/multiple-git-repositories-one-directory-dotfiles/).. – 2012-01-08 15:41:48

+0

冷杉st post並不完全解決這個問題。它所處理的是子模塊。我問的是:我可以根據相同的源文件創建兩個單獨的回購協議嗎? – giga 2012-01-08 15:51:51

回答

10

您可以通過使用對Git的命令本身這兩個選項中的一個將實現這一目標工作文件夾。

但是,您應該能夠通過使用一個具有多個分支的回購並且可能僅將某些分支推送到多個遙控來獲得您所需的東西。

+0

是的,我可能會結束與推動選擇多個分支早午餐只。 – giga 2012-01-09 02:53:31

+2

我還製作了一個腳本,可以更輕鬆地使用疊加式回購協議,也可以用作包管理器:https://github.com/capr/multigit – cap 2015-04-09 05:54:43

2

我解決了這個問題,git似乎沒有提供一個很好的解決方案,不使用git來解決它。我用directory junction將新的子文件夾鏈接到父文件夾的子文件夾(即將子文件夾鏈接到「叔叔文件夾」:P)。在命令提示符的例子爲Windows Vista和起來:

cd CurrentFolder/ 
mklink /J "LinkedFolder" "../TargetFolder" 

會導致LinkedFolder指向TargetFolder(引號)。示例文件結構我會再使用:

  • 根/
    • TargetFolder/
      • 共享文件
    • CurrentFolder/
      • LinkedFolder/

"POSIX-compliant" operating systems seem to use ln or ln -s for this functionality.

它工作出色(注:以下是從我自己的Windows 8.1測試):

  • 時,你的鏈接LinkedFolder不叫mklink
  • 之前存在,您對目標文件夾或鏈接文件夾中的文件所做的任何操作都會反映在另一個文件中,因爲它們是同一個文件,所以如果刪除了l墨水(LinkedFolder),實際目標文件夾(TargetFolder)沒有任何反應
  • 如果刪除實際的目標文件夾(TargetFolder),則鏈接將保持活動狀態(不會被刪除);如果你然後嘗試訪問該鏈接,你只會得到一個錯誤;如果您再次重新創建實際的目標文件夾(TargetFolder),該鏈接將繼續像以前一樣工作!

希望這可以幫助別人。我剛剛瞭解了這個功能,我喜歡它。

參見:
NTFS Junction Point
NTFS Symbolic Link
Symbolic Link

相關問題