意味 - 共通コードをgitサブモジュールとして追加する際の問題:「既にインデックスに存在する」




サブモジュール 意味 (6)

IntelliJ 15からファイルをコミットしようとしたときにも同じ問題がありましたが、これが何か役に立つかどうかは分かりません。結局、私はSourceTreeを開いてそこにファイルをコミットするだけでした。 問題が解決しました。 気の利いたgitコマンドを発行する必要はありません。 誰かが同じ問題を抱えている場合に備えて言及するだけです。

私はgitに新しく、サブモジュールを追加することに助けに感謝します。 私はいくつかの共通コードを共有する2つのプロジェクトを受け取りました。 共有コードは2つのプロジェクトにコピーされました。 私は共通のコードのための独立したgitリポジトリを作成し、それをgitサブモジュールとして追加する計画でプロジェクトから削除しました。

git submodule addのpathオプションを使用してフォルダを指定しました。

git submodule add url_to_repo projectfolder

しかし、エラーが発生しました:

'projectfolder' already exists in the index"

これは私のリポジトリの望ましい構造です:

repo
|-- projectfolder
    |-- folder with common code

gitサブモジュールをリポジトリに直接追加することも、新しいフォルダに追加することもできますが、プロジェクトフォルダには追加することはできません。 問題は、実際にプロジェクトフォルダに入れる必要があるということです。これについて何ができるのですか、git submoduleのパスオプションについて私が誤解していることは何ですか?


git controlの下にxという名前のフォルダがある場合、同じ名前のサブモジュールを追加したい場合は、 フォルダxを削除して最初にコミットする必要があります

@ ujjwal-singhによって更新されました:

コミットは必要ありません、ステージングは​​十分です.. git add / git rm -r


あなたのgit dirで、すべての変更を同期しているとします。

rm -rf .git 

rm -rf .gitmodules

それから:

git init
git submodule add url_to_repo projectfolder

まずgitパスのためにサブモジュールのgitリポジトリ(あなたの場合はプロジェクトフォルダ)を削除する必要があります。

rm -rf projectfolder

git rm -r projectfolder

サブモジュールを追加する

git submodule add <git_submodule_repository> projectfolder

サブモジュールを手動で削除するには、いくつかのステップが必要で、これが私の仕事でした。

あなたがプロジェクトのルートディレクトリにあり、サンプルのgitモジュール名が "c3-pro-ios-framework"であると仮定すると、

サブモジュールに関連付けられているファイルを削除する

rm -rf .git/modules/c3-pro-ios-framework/

configのサブモジュールへの参照を削除する

vim .git/config

.gitmodulesを削除する

rm -rf .gitmodules

"git"コマンドを使わずにキャッシュから削除する

git rm --cached c3-pro-ios-framework

サブモジュールを追加する

git submodule add https://github.com/chb/c3-pro-ios-framework.git

私はそれを他の方法でやって仕事を得ました。 空のリポジトリから始め、 "projectfolder / common_code"という名前の新しいフォルダにサブモジュールを追加します。 その後、projectfolderにプロジェクトコードを追加することができました。 詳細は以下の通りです。

空のレポタイプでは:

git submodule add url_to_repo projectfolder/common_code

これで、目的のフォルダ構造が作成されます。

repo
|-- projectfolder
    |-- common_code

これでサブモジュールを追加することができ、プロジェクトコードをプロジェクトフォルダに追加することができます。

私はまだそれがなぜこのように働いているのか、他のものではないのかを言うことができません。





git-submodules