2016-08-18 55 views
0

我有以下项目结构:Git在项目文件夹之外添加库?

  • MyProgram/

    • 的.git/

    • MyProgram/

      • File.c

      • File.h

      • MainFile.c

  • MyProgram.exe

  • MyStaticLibrary/

    • MyStaticLibrary/

      • ImportantFile.c

      • ImportantFile.h

    微软的Visual Studio 2015年,我挂MyProgramMyStaticLibrary所以我可以使用ImportantFile。 c/h在我的多个项目中。但是,当它提交给GitHub时,我发现我找不到到addMyStaticLibrary到回购的途径。如果我尝试,它提供了以下错误:

    fatal ../MyStaticLibrary is outside repository

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

    我该怎么办?

+0

你有任何本地提交历史吗?如果不是的话,你可以简单地删除git文件夹,在根文件夹中初始化它,然后再次推送更改! :) – Smit

+0

感谢您的建议,但MyStaticLibrary需要留在它所在的位置,因为它在多个项目中使用。如果我将它移动到专门用于“MyProgram”的文件夹中,那么它将属于“MyProgram”。我有其他需要访问'MyStaticLibrary'的GitHub项目,并且它不能一次进入多个文件夹:( – Hatefiend

回答

1

该错误信息的简单解释是正确的:你不能添加文件“上面”的仓库。

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


I don't want to do any merging or manual copy pasting because what if I had 100 libraries? Then you can't just copy paste on every commit.

这本能是一个很好的;只是说手动复制/粘贴。

Another option is for me to just not include MyStaticLibrary on my repository but then anyone who wishes to compile my code cannot do so.

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

0

也许是最简单的事情,除非你已经创建要保存一些历史,是只删除.git子目录和重做初始化在正确的目录。

想必你也可以做下面的,如果你有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." 
+0

我不能这样做,因为我需要'MyStaticLibrary'与所有其他编程项目位于同一目录中。我有多个单独的程序,它们依赖于MyStaticLibrary'和MyProgram'一样。 – Hatefiend

+0

@Hatefiend这应该是不可能的。你有没有试过在项目文件夹中创建'MyStaticFolder'的别名? – Smit

+0

你能详细说明你意思? – Hatefiend

相关问题