2016-08-18 3 views
0

私は次のプロジェクトの構造を有する:プロジェクトフォルダ以外のライブラリを追加しますか?

  • MYPROGRAM/

    • .git/

    • MYPROGRAM/

      • FILE.C

      • ファイル.h

      • MainFile.c

  • myprogram.exeという

  • MyStaticLibrary/

    • MyStaticLibrary/

      • ImportantFile.c

      • ImportantFile.h マイクロソフトのVisual Studio 2015

    、私はので、私はImportantFileを使用することができMyStaticLibraryMYPROGRAMをリンク。私のプロジェクトの複数でc/hしかし、これをGitHubに委ねると、リポジトリにaddMyStaticLibraryという方法が見つからないことがわかりました。私がしようとすると、それは次のエラーを与える:

    fatal ../MyStaticLibrary is outside repository

    私は100個のライブラリを持っていたもの場合ので、私は任意のマージまたは手動コピー&ペーストを行うにはしたくありませんか?次に、コミットするたびにコピーをコピーすることはできません。もう一つの選択肢は私のリポジトリにMyStaticLibraryを含めないことですが、私のコードをコンパイルしたい人は誰もできません。

    私は何をしますか?

+0

ローカルコミットの履歴はありますか?あなたが単にgitフォルダを削除することができない場合は、ルートフォルダにある 'init'を削除して、変更をもう一度押してください! :) – Smit

+0

アドバイスをいただきありがとうございますが、 'MyStaticLibrary'は複数のプロジェクトで使用されているように、その場所にとどまる必要があります。 MyProgram専用のフォルダの中に移動した場合、MyProgramに属します。私は 'MyStaticLibrary'へのアクセスを必要とする他のGitHubプロジェクトを持っています。そして、同時に複数のフォルダに入ることはできません:( – Hatefiend

答えて

1

そのエラー・メッセージの直接的な解釈が正しいものである:あなたがGitの歴史を持っている場合

は、おそらくあなたはまた、次の操作を行うことができます「とは、上記」リポジトリのファイルを追加することはできません。

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サブディレクトリを削除し、正しいディレクトリに初期化をやり直すことであろう。

$ 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'が他のすべてのプログラミングプロジェクトと同じディレクトリにあるので、私は 'MyProgram'と同じように' MyStaticLibrary'に依存する複数の別々のプログラムを持っています。 – Hatefiend

+0

@Hatefiendそれは不可能なはずです。プロジェクトフォルダに 'MyStaticFolder'のエイリアスを作成しようとしましたか? – Smit

+0

あなたはどういう意味ですか? – Hatefiend

関連する問題