1

これが私の問題です。例えば、

 A---B---C topic
     /
D---E---F---G master

fileAon Ecommit (トピックとマスターの共通の祖先)の内容は次のとおりです。

abc def

fileAtopicブランチは次のとおりです。

abc def
abc

fileAmasterブランチは次のとおりです。

abc def
abc
gh  //added by master.

" git checkout master; git merge topic" を実行すると、新しいfileAものが得られます:

abc def
abc
gh

しかし、マージブランチの2つのファイルに違いがある場合は、gitを終了してエラーメッセージなどをスローしてもらいたいです。

VonC の編集と回答に感謝します。次回は質問形式に気付くでしょう:)。

しかし、他の誰かがトピック内の別のファイルを変更した場合、コミット E 以降マスターでは変更されていませんが、ブランチにマージできるようにすることができます。

なぜこれが必要なのですか? 他の誰かが同じファイルに新しい変更を加えたことに気付かなかった場合
、元のファイルと比較して、パッチが「自分の」変更を生成することを確認したいだけなので、それらがマージされる可能性があります。fileA

4

2 に答える 2

0

現在、git 出力によって、git が同じファイル内の異なる変更をマージしているかどうかを特定できました。

「git merge --no-commit」を使用して出力をテストします。それが私の回避策です..

于 2012-10-26T00:52:09.390 に答える
0

他の誰かが同じファイルに新しい変更を加えたことに気付かなかった場合、元のファイルAと比較して、パッチが「自分の」変更を生成することを確認したいだけです。

これは、master がトピックに早送りされる可能性があることを意味します。なぜなら、トピックは新しいコミットを追加し、master はそうではないからです。

最初に次のことを試すことで、そうであるかどうかをテストできます。

git checkout topic git merge --ff-only master

次に、トピックをマスターにマージできます (簡単なマージ)。

テストだけしたい場合:

    git checkout topic git merge --ff-only --no-commit master

出力を解析する必要はありません。コマンドが完了すると、マージは早送りになります。
OPキースの提案--no-commit後)

于 2012-10-25T11:46:28.127 に答える