2

競合の原因となったマージを完了するために必要なGitコマンドの正しいシーケンスがわかりません。1つのアプローチは、拒否されたマージを次のようなもので追跡することであることを理解しています。

git mergetool
# Then once everything has been fixed
git add ??
git commit -m "Some message"

git-addただし、拒否されたマージ用に最初にステージングしたファイルのみが最終的にコミットされ、それらのファイルのみがコミットされるようにするために、コマンドを正確に構成する必要があるかどうかはわかりません。

4

1 に答える 1

3

git-mergetool通常、競合が解決された後、ファイルを自動的にステージングします。手動で実行する必要はありませんgit-add

ただし、さまざまなツールを使用するために、変更日git-mergetoolを確認して、ファイルが更新されていることを確認しようとします(check_unchanged()を参照)。ファイルが変更されている場合は、mergetoolからの戻りコードをチェックします。

一部のmergetoolsは正しい終了コードを返さない場合があります(マージが成功した場合は0)。そのため、mergetool.<tool>.trustExitCodeこれが信頼できない場合に備えて、gitは構成オプションも提供します。これがに設定されている場合false、gitは常にマージが成功したかどうかを尋ねます。

要約すれば:

  1. 変更が必要ない場合でも、mergetoolはマージ後にファイルをディスクに保存する必要があります(マージの競合ではないため、これは不可能です)。
  2. mergetoolの終了コードが信頼できない場合は、trustExitCodeオプションをfalseに設定できます。

実際には、gitがネイティブにサポートするようになったマージユーティリティの1つを使用することをお勧めします。これらのリストはここで入手できます。これらのツールのいずれかを使用する場合は、それを使用するようにgitを構成する以外に、追加のセットアップは必要ありません。例:

git config --global merge.tool p4merge

注:これらのツールのセットアップに関する古い記事がWeb上にたくさんある場合があります。たとえば、私のお気に入りのmergetoolであるp4mergeは、最初はgitでネイティブにサポートされておらず、手動で構成する必要がありました。これは、最近のバージョンのgitでは不要になりました。

于 2013-01-29T06:04:04.020 に答える