版本控制下的嵌套项目会破坏吗?

时间:2012-02-28 18:46:31

标签: git version-control git-submodules

在我冒险进入未知领域之前,我想知道你们中的一位Git大师是否可以提供一些建议。

我在GitHub上有三个受版本控制的项目的解决方案。

我希望将主干作为我解决方案中的第四个项目,以便我可以比将这些更改推送到nuget.org时更快地获得一些修复。

通过在版本控制的解决方案中嵌入版本控制的lucene.net项目,这会破坏我的回购吗?

1 个答案:

答案 0 :(得分:0)

想象一下以下布局:

a/
    .git/
    somefile1
    somefile2
    dir1/
        .git/
        file1
        file2             

如果您发出git add dir1/file1git dd dir1/,则只需添加“dir1 / file1”等文件。但是如果你执行git add dir1git add .,git将只添加指向“dir1”子存储库中最后一次提交的指针而不添加内容。它将创建子模块(考虑到正确的设置,您还需要配置.gitmodules)。 “git gui”也将其视为子项目的候选人。

您可以在两个独立的存储库中包含文件(如第一个中的“dir1 / file1”,另一个中的“file1”),并且可以看到一个存储库中的“git checkout”(或其他命令)就像编辑文件一样在另一个。

你应该先看看差异(比如“git diff HEAD”),然后再确认你在做什么。如果它像“Subproject commit b6030fea8787a6133c3a8d97e270485d9b5e552f”那么它只是添加一个指向其他存储库的指针,如果它是常规diff,那么就不会使用子项目而只是从那里添加文件。