Gitでマージの競合が発生すると、競合するファイルに次のようなジャンクが挿入されます。3つの質問:
- これらの注釈をどのように読みますか?
- これらのマージの競合を修正するときに使用するいくつかの戦略は何ですか?
- これらのファイルを読み取り、2つのバージョンを並べて表示して、問題の修正を容易にする方法を知っているMac用のGUIツールはありますか?
注:関連する場合は、GitHubのMacGUIクライアントを使用しています。
Gitでマージの競合が発生すると、競合するファイルに次のようなジャンクが挿入されます。3つの質問:
注:関連する場合は、GitHubのMacGUIクライアントを使用しています。
<<<<<<
との間のすべては、マージ操作を開始する前のコミットされた状態であるリビジョン======
から取得されます(ツリーがダーティである場合は文句を言うので、作業ディレクトリと同等である必要があります)。HEAD
git merge
======
との間の部分は、>>>>>>
マージされるバージョンからのものです。後のテキスト>>>>>>
は、競合する変更を導入したコミットのコメントです。
競合マーカーがあるということは、ファイルのこの部分のベースバージョンが両方の「新しい」バージョンと異なることを意味します。ベースバージョン(最後の共通祖先)は表示されません。
より快適なマージが必要で、GUIを利用できるようにする場合は、kdiff3を確認することをお勧めします。
<<<< 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
(グラフィカルな)マージツールを構成し、そのツールを使用して競合を解決できます。
また、git mergetool
コマンドも確認してください。事前定義されたツールの1つがインストールされているか、他のツールを構成している場合は、解決のためにツールが開きますhttp://schacon.github.com/git/git-mergetool。 html
GUIツールに興味がある場合は、GUIツールを使用すると簡単に解決できるため、表記の実際の意味を気にする必要はありません。=====
とでマークされた部分>>>>>
が競合セクションであることを理解してください。
同じファイルに変更が加えられた2つのブランチがあり、それらをマージしようとすると、マージの競合が発生します。競合するファイルのリストを表示するgit status
には、端末で実行します。
ファイルの競合する行は、視覚的なインジケータでマークされます。-競合
<<<<<
はこの行の後に始まります。
=====
-HEADおよびmerging_branchからの変更を考案します。
>>>>>
-競合する行の終わり。
<<<<<<< HEAD
conflicted text from HEAD
=======
conflicted text from merging_branch
>>>>>>> merging_branch
競合するファイルを修正してマージの準備ができたら、実行git add
しgit commit
てマージコミットを生成するだけです。コミットが行わgit push
れると、ブランチに変更が加えられます。
参考記事:Gitマージ。