web-dev-qa-db-ja.com

gitでの競合を修正するには?

プルしようとすると、次のメッセージが表示されます。

Automatic merge failed; fix conflicts and then commit the result.

それで、私は these の指示に従うために(gitが示唆するように)競合を修正しようとします。

最初に行う必要があるのは、「問題のある」ファイルをテキストエディタで開いて、そのような行を見つけることです。

If you have questions, please
<<<<<<< HEAD
open an issue
=======
ask your question in IRC.
>>>>>>> branch-a

問題は、ファイルにそのようなものが表示されないことです。特に、HEADを検索しましたが、そこにはありませんでした。

5
Roman

Gitの競合を解決するにはいくつかの方法があります。ここでは、GUIとテキストエディターを使用して説明します。

テキストエディターを使用してgitの競合を解決します。

メモ帳、gedit、vim、nano、さらにはEclipseなど、お気に入りのエディターを開きます。

  1. ファイルに競合がある場合は、必ずgit [<<<<<<<<]のような競合マーカーを追加してください。

  2. テキストエディターでファイルを開くと、HEADまたは<<<<<<< HEADの後のベースブランチからの変更が表示されます。

  3. ========、他のブランチからの変更を>>>>>>>>YOUR_BRANCH_NAMEとして分割します

  4. ブランチの変更を保持するかどうかを決定できます。変更内容を保持したい場合は、競合マーカーである<<<<<<<, =======, >>>>>>>を削除してから、マージを実行してください。

変更をコミットするコマンド。

git add . or git add "your_file"
git commit -m "Merge conflicts resolved"

Gitを解決するとGUIが競合する

ファイルでマージの競合が非常に多い場合はどうなりますか?その場合、GUIを使用できますが、GUIを選択するかどうかは個人的な選択です。 GUIでは、並べてdiffを確認できます。初心者でも簡単に変更を確認できます。

使用するmergetoolを使用するには、gitを設定する必要があります。例:meld、kdiff3またはvimdiff。繰り返しますが、彼らが好むのはユーザー次第です。 meldを使用します。ここで、これらのツールをインストールする必要があります。インストール後、構成する必要があります。

git config merge.tool meld 

マージの競合を解決できます

git mergetool -t meld

次に、テキストエディターを使用して解決する手順2〜4に従って、マージの競合を解決できます。

9
danglingpointer