Git在项目文件夹之外添加库?

时间:2016-08-18 03:04:44

标签: git visual-studio static-libraries

我有以下项目结构:

  • MyProgram /

    • 的.git /

    • MyProgram /

      • File.c

      • File.h

      • MainFile.c

  • MyProgram.exe

  • MyStaticLibrary /

    • MyStaticLibrary /

      • ImportantFile.c

      • ImportantFile.h

    Microsoft Visual Studio 2015 中,我将 MyProgram MyStaticLibrary 相关联,因此我可以使用 ImportantFile.c / h 在我的多个项目中。然而,当我把这个提交给GitHub时,我发现我无法找到add MyStaticLibrary到回购的方式。如果我尝试,它会出现以下错误:

    fatal ../MyStaticLibrary is outside repository

    我不想做任何合并或手动复制粘贴,因为如果我有100个库怎么办?那么你就不能在每次提交时复制粘贴。另一个选择是我不在我的存储库中包含MyStaticLibrary,但是那些希望编译我的代码的人不能这样做。

    我该怎么办?

2 个答案:

答案 0 :(得分:1)

对该错误消息的直接解释是正确的:您无法在存储库“上方”添加文件。

理想情况下,您可以将MyStaticLibrary/版本与依赖它的所有项目分开,并使用依赖项管理器或Git submodule将源代码转换为依赖它的项目。如果您有100个库都依赖于这样的子模块,那么您可能希望编写一个脚本来使它们全部都是最新的。

  

我不想进行任何合并或手动复制粘贴,因为如果我有100个库怎么办?那么你不能只在每次提交时复制粘贴。

这种本能是好的;只需对手动复制/粘贴说不。

  

另一个选择是我不在我的存储库中包含MyStaticLibrary,但是那些希望编译我的代码的人不能这样做。

同样,避免让项目需要不在存储库中或随时可用的东西。

答案 1 :(得分:0)

除非您已经创建了一些要保存的历史记录,否则可能最简单的事情就是删除.git子目录并在正确的目录中重做init。

如果你有git历史记录,大概你也可以做以下事情:

$ mv .git ../
$ cd ..
$ git add . --all 
$ git status // => you can see all the files recognized as renamed 100%
$ git commit -m "Moves repo to root directory."