60

Gitでマージの競合が発生すると、競合するファイルに次のようなジャンクが挿入されます。3つの質問:

  1. これらの注釈をどのように読みますか?
  2. これらのマージの競合を修正するときに使用するいくつかの戦略は何ですか?
  3. これらのファイルを読み取り、2つのバージョンを並べて表示して、問題の修正を容易にする方法を知っているMac用のGUIツールはありますか?

ここに画像の説明を入力してください

注:関連する場合は、GitHubのMacGUIクライアントを使用しています。

4

5 に答える 5

36

<<<<<<との間のすべては、マージ操作を開始する前のコミットされた状態であるリビジョン======から取得されます(ツリーがダーティである場合は文句を言うので、作業ディレクトリと同等である必要があります)。HEADgit merge

======との間の部分は、>>>>>>マージされるバージョンからのものです。後のテキスト>>>>>>は、競合する変更を導入したコミットのコメントです。

競合マーカーがあるということは、ファイルのこの部分のベースバージョンが両方の「新しい」バージョンと異なることを意味します。ベースバージョン(最後の共通祖先)は表示されません。

より快適なマージが必要で、GUIを利用できるようにする場合は、kdiff3を確認することをお勧めします。

于 2012-02-09T08:10:03.847 に答える
22
于 2012-12-26T19:19:01.460 に答える
17
<<<< HEAD #Where the conflict starts

#Previous Revision

========== # The point where things look iffy

#Things that changed

>>>>> New Commit # Point where the conflict ends

MacのXcodeにはFileMergeが付属しており、コマンドラインで。を使用してアクセスできますopendiff

git mergetool -t opendiff

于 2012-02-09T08:19:05.083 に答える
4

(グラフィカルな)マージツールを構成し、そのツールを使用して競合を解決できます。

また、git mergetoolコマンドも確認してください。事前定義されたツールの1つがインストールされているか、他のツールを構成している場合は、解決のためにツールが開きますhttp://schacon.github.com/git/git-mergetool。 html

GUIツールに興味がある場合は、GUIツールを使用すると簡単に解決できるため、表記の実際の意味を気にする必要はありません。=====とでマークされた部分>>>>>が競合セクションであることを理解してください。

于 2012-02-09T08:19:39.077 に答える
0

同じファイルに変更が加えられた2つのブランチがあり、それらをマージしようとすると、マージの競合が発生します。競合するファイルのリストを表示するgit statusには、端末で実行します。

ファイルの競合する行は、視覚的なインジケータでマークされます。-競合 <<<<<はこの行の後に始まります。 =====-HEADおよびmerging_branchからの変更を考案します。 >>>>>-競合する行の終わり。

<<<<<<< HEAD
conflicted text from HEAD
=======
conflicted text from merging_branch
>>>>>>> merging_branch

競合するファイルを修正してマージの準備ができたら、実行git addgit commitてマージコミットを生成するだけです。コミットが行わgit pushれると、ブランチに変更が加えられます。

参考記事:Gitマージ

于 2018-05-22T12:08:46.090 に答える