32

既に存在するサブモジュールを追加しようとしています (別の git リモート リポジトリ)。正しく行う方法を検索していなかったので、リポジトリを台無しにしてしまったと思います。もう一度修正するには助けが必要です。

削除したいサブモジュールに関して、関連するすべてのセクションを .gitmodules および .git/config から既に削除しました。.git/ ディレクトリ内に modules ディレクトリがないことも確認しました。

ただし、コマンドを実行するgit rm --cached path_to_submoduleと、次のメッセージが表示されます。

致命的: pathspec 'path_to_submodule' がどのファイルとも一致しませんでした

前のコマンドが失敗したため、コマンドを実行して新しい定義で同じサブモジュールを再度追加しようとすると、次git submodule add gituser@host:repo.gitのメッセージが表示されます。

'repo' は既にインデックスに存在します
4

5 に答える 5

66

メッセージ ( 'repo' already exists in the index) が表示される唯一の方法は、「repo」がまだインデックスに存在する場合です (サブモジュールに関するこの章を参照してください)。

$ rm -Rf rack/
$ git submodule add git@github.com:schacon/rack.git rack
'rack' already exists in the index

You have to unstage the rack directory first. Then you can add the submodule:

$ git rm -r rack
$ git submodule add git@github.com:schacon/rack.git rack

' rack' がサブモジュールでなくても、存在する場合は、同じ名前のサブモジュールの宣言を防ぎます。

于 2012-08-31T16:07:23.223 に答える
3

エラーとのマージ、サブモジュールのフォルダーの手動削除、または Hallileo Comet のような何かで発生する可能性があります

  1. ファイル内.gitmodules- サブモジュールへのリンクを削除します (サブモジュール名を含むセクション全体)

  2. in file .git\config- 前のステップと同様に、サブモジュールへのリンクを削除します

  3. フォルダー内.git\modules- 「問題」モジュールの相対パスと同様の相対パスを持つフォルダーを削除します

  4. サブモジュールのフォルダーがもう存在しないことを確認してください

  5. それから:

    $ git submodule add -f --name <name> <git://path_1.git> <path_2>

    ここで: name - あなたが望むサブモジュールの名前。あなたのrepo名前と同じかもしれません。- サブモジュール ソース リポジトリへのパス (例 - github など)、 - サブモジュールが存在するフォルダーへの相対パス

    これにより、パス内またはインデックスにまだ存在するが自然に生きていない名前でサブモジュールを追加できます。

これらのデッドリンクをインデックスから削除する方法は見つかりませんでしたが、強制された場合

于 2016-08-28T09:03:01.380 に答える