4

私はかなり珍しい状況に陥りました。基本的に、作業状態を2つのコミットに分割したいと考えています。1つはマージコミットであり、もう1つはそれ自体の実質的なコミットです。

ダウンしたものは次のとおりです。

  1. 作業状態を保存しましたgit stash
  2. git rebase master
  3. いくつかのマージの競合を確認し、それらを修正します
  4. git stash pop
  5. 競合のあるファイルでしばらく作業します

マージの競合の修正をコミットするのを忘れたため、これらのファイルは引き続き競合としてマークされていることに注意してください。しかし、彼らには私が望まないローカルな変更もあります。

目標

マージの競合を解決するための1つのコミットと、ローカルの変更を伴う1つのコミット。現在の(競合している)状態をこれらの2つのコミットに分割するにはどうすればよいですか?

4

3 に答える 3

1

私の変更は差分の個別のチャンクだったので、私は自分の解決策を見つけました。これが私がしたことです:

  1. git addマージされていないすべてのファイル。これにより、作業ツリーが使用可能な状態になりました
  2. git resetこれらのファイルのステージングを解除するには
  3. コミットする特定のチャンクを選択git add --patch

このソリューションの欠点は、最初のコミットには、それを引き起こしたマージ競合に関する自動メタデータがないことです。

于 2012-06-26T18:43:08.720 に答える
1

私の頭の中で、同じような状態のレポを持っていないので、最善の計画はおそらくgit stash現在の状態 (進行中のマージと新しい作業) にgit resetしてから、マージの前に戻ることです。その後、マージをやり直して、コミットすることを忘れないでください。その後git stash pop、しかし、おそらくそれを行うと、マージの競合の逆になってしまうでしょう。

マージから得られたチャンクとgit add -ietを介した追加作業を明確に区別できない限り。al。、または、マージまたは追加の作業のいずれかが、投げて最初からやり直すのに十分なほど重要でない場合...

于 2012-06-25T21:22:19.027 に答える
1

git rebase --abort(リベースを行っているため) を作成し、再度作成してから、再git stash試行してgit rebase、 で競合を解決できgit mergetoolます。競合を処理したら、git rebase --continue.

于 2012-06-25T21:25:52.113 に答える