5

私はGitを初めて使用します。現在、私はこのシナリオを経験しています:

ステップ0.サブブランチに取り組んでいます

ステップ1.サブブランチにfile1、file2、file3を追加してコミットし、それぞれコミットメッセージmsg1、msg2、msg3を付けました。

ステップ2.マスターブランチcheckout masterに切り替えます

ステップ3.pull origin masterマスターブランチを最新のオリジンバージョンコードで更新します

ステップ4.merge sub-branch作業コードを現在のマスターブランチコードにマージします

次に、file2で競合が発生しました。

次に、競合を手動で解決しました。ここで、このファイルに変更があるため、file2を追加する必要があります。

ステップ5.add file2このファイルの競合を解決したため、マスターブランチにいます

ステップ6.今、どのコミットメッセージを書くべきですか?msg2のみ?またはmsg1、msg2、msg3はすべて今すぐ書き直す必要がありますか?(作業したファイルのコミットメッセージmsg1、msg2、msg3を失いたくない)

4

2 に答える 2

9

これらのマージされたコミットに対して新しいコミットメッセージを書いているのではありません。マージコミット自体のコミットメッセージを書いています。あなたの歴史は次のようになります:

- x - o - o - o (origin/master) - X (master)
   \                             /
    1 - 2 - 3 (sub-branch) ------

あなたが書いているコミットメッセージはのためのものXです。コミット、、、1および23祖先であり、まだ履歴にあり、コミットメッセージが残っています。マージでそれらを変更する方法はありません。

X競合がない場合ののコミットメッセージは、デフォルトで。のようなものになりますMerge branch 'sub-branch'。競合がある場合でも、最初の行としてそれが表示されますが、競合が発生したファイルのリストも表示されます。

 Merge branch 'sub-branch'

 Conflicts:
     file2

これは、単純なマージよりも重要なことを行ったことを示す穏やかなヒントです。での競合を解決するには、手動で作業する必要がありましたfile2。必要に応じて、これらの競合の原因と解決方法に関する簡単なメモを追加できます。それ以外の場合は、そのメッセージをそのまま使用してください。これは、マージ(および競合解決)の説明にすぎないことを忘れないでください。マージしたコミットには、独自のコミットメッセージがあります。

于 2011-03-24T18:38:33.727 に答える
3

競合を解決したら、次にgit add <conflicted file>進むときにgit commit、マージと解決されたコミットについて、事前に作成されたコミットメッセージを提供する必要があります。そうじゃない?他のマージされたコミットは失われません。何も書き直す必要はありません。

  1. BranchBにコミットする
  2. git checkout master
  3. git pull origin master
  4. git merge BranchB
  5. ファイル内の競合を解決します
  6. git add <conflicted file(2)>
  7. git commit

ステップ7:paramsなしで呼び出された場合、マージと解決された競合を説明する適切なメッセージを含むデフォルトのコミットメッセージエディターを開く必要があります(私は信じています)

于 2011-03-24T15:50:17.590 に答える