我是git& amp;的初学者我有新项目的以下文件夹结构,所以我做的是我去了visual studio,我做了空项目它有这个文件夹结构:
project: (Repo)
folder1 (sub1)
folder2 (sub2)
我在本地使用git
我使用sourcetree创建了一个项目回购,
现在我不能添加任何子模块,我不知道为什么。
每当我尝试时,在powershell中:
PS E:\Projects\Project> git submodule add ./sub1
我收到以下错误:
sub1 already exists in the index
然后删除了sub1 git rm -r sub1
,然后我再次重复git submodule add
,我收到了这个新错误:
sub1 already exists and is not a valid git repo
那么我做错了什么?
答案 0 :(得分:9)
您只需要在根文件夹中,然后添加子模块文件夹。
git submodule add <url>
现在,当你克隆项目时,你只需要初始化并更新子模块
git submodule init
git submodule update
Git 1.8.2提供了一个新选项--remote
git submodule update --remote --merge
将从每个子模块的上游获取最新的更改,将它们合并,并检查子模块的最新版本。正如[文档] [1]所说:
--remote
此选项仅对更新命令有效。不使用超级项目记录的SHA-1来更新子模块,而是使用子模块的远程跟踪分支的状态。
这相当于在每个子模块中运行git pull。
答案 1 :(得分:7)
Adding a submodule意味着在现有的git repo中克隆另一个git repo并保留对它的引用。
在您的情况下,您没有指定要添加的回购:
git submodule add -- /url/of/sub1/repo sub1
如果sub1
或sub2
不应该是他们自己的git repos,而是主repo文件夹的简单子文件夹,则不需要git submodule add
命令。<登记/>
只需在sub1
和sub2
中添加文件,您就可以git add
和git commit
了。
没有涉及子模块。