在我冒险进入未知领域之前,我想知道你们中的一位Git大师是否可以提供一些建议。
我在GitHub上有三个受版本控制的项目的解决方案。
我希望将lucene.net主干作为我解决方案中的第四个项目,以便我可以比将这些更改推送到nuget.org时更快地获得一些修复。
通过在版本控制的解决方案中嵌入版本控制的lucene.net项目,这会破坏我的回购吗?
答案 0 :(得分:0)
想象一下以下布局:
a/
.git/
somefile1
somefile2
dir1/
.git/
file1
file2
如果您发出git add dir1/file1
或git dd dir1/
,则只需添加“dir1 / file1”等文件。但是如果你执行git add dir1
或git add .
,git将只添加指向“dir1”子存储库中最后一次提交的指针而不添加内容。它将创建子模块(考虑到正确的设置,您还需要配置.gitmodules)。 “git gui”也将其视为子项目的候选人。
您可以在两个独立的存储库中包含文件(如第一个中的“dir1 / file1”,另一个中的“file1”),并且可以看到一个存储库中的“git checkout”(或其他命令)就像编辑文件一样在另一个。
你应该先看看差异(比如“git diff HEAD”),然后再确认你在做什么。如果它像“Subproject commit b6030fea8787a6133c3a8d97e270485d9b5e552f”那么它只是添加一个指向其他存储库的指针,如果它是常规diff,那么就不会使用子项目而只是从那里添加文件。