2017-09-08 10 views
0

スーパープロジェクトでサブモジュールを誤ってマージした状況があります。私は勿論、今、すべてのサブモジュールからのメッセージをコミットは、スーパープロジェクトに統合されて.gitmodules偶発的なマージからコミットを取り除く

git pull submodule_dir/submodule_file 

の場所すなわちスーパープロジェクトから以下のコマンドを実行しました。私は手動でフォルダ内にあるので、ファイルを手動で削除できますが、すべてのコミットを削除するには(合計で約9個です)、識別することもできます。問題は、コミットが広がっているため、リベースが機能しないことです。例えばHEAD^9へのリベースは、スーパープロジェクトに実際に属するコミットのいくつかも削除します。

git reset,git rebaseが効きません。そうでなければ、私は他のコミットを緩めるでしょう。

git reset --hard origin/masterが最も適切な賭けですが、既にコミットしていたローカル変更が破棄されます。

解決策は何ですか?私はチェリーピックを一度も使用していませんが、もし私がそれをしなければならないかどうかはわかりません。私は実験の前に尋ねて物事を悪化させたかったのです。このようなものと、すべての犯人のコミットを削除する。

commit latest: this consists of all my local changes and they are precious. 
commit 
commit 
culprit commit 
commit 
commit 
culprit commit 
commit 
commit 
culprit commit 
commit 
commit 
commit 
commit 
+0

[私はサブモジュールを削除するにはどうすればよい?](https://stackoverflow.com/questions/1260748/how-do-i-remove-a-submodule) –

+0

@TimBiegeleisenの可能性の重複私はあなたが問題を誤解していると思います。サブモジュールとは関係ありません – infoclogged

+0

マージコミットをリベースすることはできませんが、マージコミットの1つの親で以前のコミットにリベースすることは可能です。 –

答えて

0

スーパーブランチから以下のコマンドを使用できます。

git reset --hard HEAD~9 

それは最後の9つのコミットをリセットして、あなたのコミットが削除されて見ることができるコマンドの下に

git log 

を実行します。

2

git reset --soft HEAD~9は、変更内容を保存しますが、インデックスファイル、またはすべての作業ツリーには触れていませんコミット

を削除します(ただし、すべてのモードが行うと同じように頭をリセットします)。これによりgit statusが置くように、変更されたすべてのファイルが「変更がコミットされる」ようになります。

Source

関連する問題