2009-07-11 6 views
1

私はマスターブランチから、私がかなりの時に開発してきた別のブランチにマージするのが難しいです。Git:マスターブランチからマージすることはできません "オブジェクト - サブモジュール"

私は次の取得まっすぐ進むマージを行う:

shell$ git merge master 
fatal: cannot read object asd211f3a58febecd4e447szxs733079211c71b7sa '/my/sub/dir/foo~master': It is a submodule! 

私は決してセットアップ明示的にサブモジュールとしてライブラリ「foo」で。私はgitによってサブディレクトリが.gitになっているライブラリをgitリポジトリであるメインプロジェクトに移動するのは間違いでした。

明らかに、私はサブモジュールを適切に取り外さなかったか、または何かが重大に壊れていました。

さらに重大な問題は、失敗したマージの後で、私は 'git status'を介して膨大な量のプロジェクトファイルを見ることです。 「変更されていますが、追加されていないファイル」には「未対応のファイル」が含まれています。これらは私のブランチからのファイルではなく、マスターからのファイルです。

壊れたレベルがいくつあるかわかりません。しかし、これは2つのステップの問題です。サブモジュールは、失敗したマージが表示された後のファイルの束に加えて表示されます。

このリポジトリをクリーニングするにはどうすればよいですか?

+0

私は、サブモジュールがブランチ上で正しくあり、マスター上ではないのと同じ問題を抱えています。マージを完全に防止します。 シェルの$ gitが--hard ORIG_HEAD HEADをリセットf6ed2d5のFoo シェル$ gitのサブモジュールのステータスになってい シェル$ gitのチェックアウトマスター エラー: –

答えて

1

は私が提案してもよい:

git reset --hard ORIG_HEAD 

その後にサブモジュールを調査:

git submodule status 

あなたの場所に.gitmodulesファイルを持っていますか?両方のブランチからサブモジュールの概念を削除して(コミットして)マージをやり直してください。

+0

は、以下を取得することを試みた人跡未踏ワーキングツリーのファイル「/パス/ /へsome/dir/foo.png 'はマージによって上書きされます。 shell $ – Coocoo4Cocoa

+0

また、どこでも.gitmodulesファイルの兆候は見られません。 (どちらの支店でも) – Coocoo4Cocoa

0

私の場合、サブモジュールとして保存され、追跡されるライブラリの特定のバージョンに依存する "main"というブランチがあります。マスター(トランク)は、ライブラリの開発版を使用するため、サブモジュールが削除されます。シンプルなGitのマージを行うことがサブモジュールに着いたときに失敗し、次の何をすべきかについて何の手がかりを提供しないだろう:それは戦略をマージ、特定の「決意」を使用することが提案された場所

git merge --no-commit main/urology-main 
fatal: cannot read object 7bd71249fc9575b7985bcd6b65e77f14690a6be6 'Utech_DTools': It is a submodule! 

Googleはこのsimilar questionを上げ:

git merge -s resolve --no-commit main/urology-main 
ERROR: Utech_DTools: Not handling case 66001ac8d03d8b930c72536d3946ca40e3810320 -> -> 7bd71249fc9575b7985bcd6b65e77f14690a6be6 

ただし、サブモジュールをスキップしてもマージは継続されました。

関連する問題