基本上,在主題行中的問題,默認情況下,Git會忽略自己的Git回購目錄嗎?默認情況下,Git會忽略自己的Git回購目錄嗎?
我在問,因爲我在一個文件夾中創建了一個Git倉庫,其中包含一些子文件夾中的其他一些倉庫,以及其他一些我想跟蹤的文件。
我很驚訝地發現新的Git倉庫似乎會自動忽略子目錄中那些Git倉庫的文件。
基本上,在主題行中的問題,默認情況下,Git會忽略自己的Git回購目錄嗎?默認情況下,Git會忽略自己的Git回購目錄嗎?
我在問,因爲我在一個文件夾中創建了一個Git倉庫,其中包含一些子文件夾中的其他一些倉庫,以及其他一些我想跟蹤的文件。
我很驚訝地發現新的Git倉庫似乎會自動忽略子目錄中那些Git倉庫的文件。
是的,這是Git的一個特性。如果您初始化子文件夾中的Git存儲庫,然後嘗試將該文件夾添加到父文件夾的Git存儲庫,該文件夾的Git歷史記錄將不包含子文件夾的文件。
您可以修改這些文件並嘗試添加它們,但您會收到類似modified: some_dir (modified content, untracked content)
的消息。只有目錄名稱將被跟蹤。
創建子模塊來解決這種常見的情況。它們允許您將Git存儲庫作爲另一個Git存儲庫的子目錄。如果你需要跟蹤父文件夾和子文件夾,子模塊會讓你做到這一點。
This documentation提供了一步一步的指導。
默認情況下,Git會假定你的項目是一個整體,並將包含所有的文件夾(即使它們是單獨的項目)。如果你想擁有它們視爲獨立的,你可以設置一個子文件夾的子模塊:
$ cd MainProject
$ git submodule add [email protected]:me/apps.git apps
$ git commit -a -m "added a submodule"
$ git push
您可以通過以下網址瞭解更多關於他們:
如果你正在管理一個有子回購回購,我建議在看子樹,而不是子模塊的幾個原因:
有幾個原因,你可能會發現樹更好地使用:
- 管理簡單的工作流程很簡單。
- 支持較舊版本的git(甚至在v1.5.2之前)。
- 子項目的代碼是超級項目的克隆後可用右完成
參見:http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/
謝謝!這解釋了我所看到的行爲! – timbram