2013-03-10 117 views
0

我試圖將文件添加到以前以某種方式添加爲子模塊的git repo。我不知道那是怎麼發生的。Git Submodules的問題

我不能在任何地方找到一個.gitmodules文件和我的.git/config看起來是這樣的:

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
[remote "origin"] 
    url = [email protected]:frankV/dotfiles.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 

我需要包括VIM vundle目錄,但我不能因爲上述的問題。到目前爲止,我一直無法從這個回購中刪除它,或者在vundle的目錄下面添加任何文件。

當我嘗試添加一個文件,我得到:fatal: Path '_vim/bundle/vundle/autoload/vundle' is in submodule '_vim/bundle/vundle'

和我的git狀態輸出:

... 
# modified: _vim/bundle/Command-T (untracked content) 
# modified: _vim/bundle/The-NERD-Commenter (untracked content) 
# modified: _vim/bundle/The-NERD-tree (untracked content) 
# modified: _vim/bundle/matchit.zip (untracked content) 
... 

正如你所看到vundle不在這個名單,它的優良無法跟蹤這些子模塊因爲他們通過vundle安裝...所有更多的原因,然而讓vundle工作!

+0

您是否在該包文件夾內搜索了'.git'文件夾或'.gitmodules'文件?它可能是嵌套回購 – 2013-03-10 12:48:30

+0

我沒有找到任何東西。不知道它是否曾經有過,並且不知何故被刪除了或者是什麼。 – frankV 2013-03-10 12:50:04

+0

你是如何搜索它們的?如果你使用了文件管理器,它可能會隱藏「點文件」。 – 2013-03-10 14:06:18

回答

1

你有一個嵌套的倉庫,找到它與find . -name .git,如果你真的想導入無歷史的源,然後git rm它的包含目錄並刪除.git目錄本身。爲了不遺漏當前的歷史記錄,您可以從中獲取並從子樹中合併分支,但在保留結構和歷史記錄方面儘可能少的努力將會保持回購結構的原樣。

Git調用嵌套的存儲庫子模塊,並且確實有幫助您管理gruntwork的命令 - 例如,子模塊的主要回收通常由第三方託管(例如您的git://github.com/gmarik/vundle.git),因此子模塊命令集建立一些基礎設施來幫助宣傳您的任何回購客戶可以在哪裏找到子模塊的初選 - 但是子模塊命令所做的一切都是協助處理類似的普通任務。沒有其他git命令有任何線索是否將repo用作子模塊,因爲它不必在意。

因此,你現在所做的就是試圖將別人正在進行的項目的結果用作自己項目中的構建模塊,而做到這一點的git方法只是以最直接的方式做到這一點:克隆他們的項目並將其用作您自己的一部分。 This other answer I wrote可能是TMI,它是關於將一​​個項目拆分成子模塊的,但是這是另一個概念。

+0

「,但在保留結構和歷史的最小努力方面的甜蜜點將會保持原來的回購結構。」賣!謝謝你的提示。 – frankV 2013-03-10 23:43:21