2010-02-23 93 views
28

似乎一個父repo中的git repo不包含在父級的提交中,除非它被設置爲子模塊。是否有可能重寫此行爲並將嵌套的git回購視爲任何其他目錄?我不想通過子模塊依賴外部依賴,但希望使用git來管理項目中的這些依賴關係。嵌套的git倉庫沒有子模塊?

+0

我不知道這是正確的方式,以「奶源的依賴關係」,但我建議兩種方式來實現你想要的東西,再加上一些精度大約子模塊中的Git性質。 – VonC 2010-02-23 12:04:21

+1

這聽起來像你真正想要的是一個子樹合併。這會讓您擁有一個單一的存儲庫和一個歷史記錄。 – 2011-08-25 20:09:26

+0

你確定**父代倉庫內的git倉庫不包含在父項提交中,除非它被設置爲子模塊**?因爲這就是我想要的,如果你是對的,那麼Git就有這個開箱即用的功能。 – 2016-07-13 05:04:51

回答

7

1 /你可以重寫通過:

  • 無論是git config設置:設置環境變量$GIT_DIR
    定義你的.git目錄中的嵌套的Git工作樹作爲一種外部.git(外部無論是嵌套回購和主回購)
  • 或通過設置您的嵌套回購'N'主要回購,但結帳回購'N'裏面主要回購:
core.worktree

設置路徑工作樹的根。這可以被GIT_WORK_TREE環境變量和--work-tree命令行選項覆蓋

在這兩種情況下,這個想法都是嵌套工作樹,其中沒有任何.git子目錄。

2 /對於子模塊,嵌套的git回購沒有真正包含在父回購中。
在父樹中創建一個special entry來記錄外部Git SHA1。

new file mode 160000 
index 0000000..4c4c5a2 

參見 「nature of Git submodules」(答案的第三部分)

+0

您的方法1a和1b對我來說非常合適,謝謝。我確定這不是推薦的方法,但我真的需要這種靈活性。感謝您的全面回答! – stevo 2010-02-23 12:27:37

+3

所以沒有選項可以讓git將嵌套的.git目錄當作普通目錄來處理? – 2014-09-18 20:11:29

+1

@Mr_and_Mrs_D不是我所知道的 – VonC 2014-09-18 20:19:06

2

Are git submodules the only safe way to have working copies within working copies?見。

實際上,當我遇到目前的討論時,我所關心的問題不同於此處解決的問題:使用git作爲一種歸檔工具,可以歸檔已經有一些git工作目錄的文件系統樹。也許另一個問題更接近我的問題。

+0

這是一個針對我的問題的工具:http://webcache.googleusercontent.com/search?q=cache:Ffr9y2l0jh4J:eigenclass.org/hiki/gibak-backup-system-introduction+嵌套+ git&cd = 2&hl = en&ct = clnk&gl = ru。可能還有其他類似的工具。 – 2010-06-23 18:53:16

+1

哎呀 - 評論中斷鏈接(你可能應該刪除並添加到你的答案) – 2014-09-18 20:06:37

0

這不是最優雅的解決方案,但值得一提。

如果您壓縮包含存儲庫的文件夾,則可以將其檢入外部存儲庫。

這會很有幫助,因爲您將擁有完整的完整狀態,包括git reflog

+0

看起來像這是唯一的真正的選擇,它不會增加額外的(手動)步驟... – nus 2016-07-07 16:07:02

4

我發現似乎爲我

工作,如果你git add somefolder/ <另一種方法 - 確保你在年底有/,那麼這反而增加處理它像一個子模塊的所有文件。

更多的是這裏所說的:http://debuggable.com/posts/git-fake-submodules:4b563ee4-f3cc-4061-967e-0e48cbdd56cb

+0

這就是我一直在尋找,但如果我嘗試添加嵌套的.git本身,則會收到錯誤消息: 錯誤:路徑'test/data/fixtures/clean/.git/COMMIT_EDITMSG'無效 錯誤:無法添加測試/數據/ clean/.git/COMMIT_EDITMSG索引爲 fatal:添加文件失敗'它似乎與實際文件一起工作,謝謝,這是一個開始 – nus 2016-07-07 16:02:58

+0

我已經看到人們在哪裏重命名一個嵌套'.git'文件夾到'.checkout_git 'https://blog.gopheracademy.com/advent-2015/go-in-a-monorepo/ 並根據需要重新命名 – 2016-07-07 16:37:02