この記事はStackOverflowの質問"How to resolve conflicts in EGit"に対する回答(https://stackoverflow.com/a/27914508)の日本語訳です。(2020/07/02 9:31閲覧 original: dan carter, edited: Peter Mortensen)
原文と同じく、CC BY-SA 4.0でライセンスされます。
Team Synchronize(チーム同期化)ビューを使っていますか?それは問題です。EGitの場合、競合の解決にTeam Synchronizeビューは全く使えません。代わりにGit Repository(Gitリポジトリー)ビューを使う必要があります。
Gitパースペクティブを開いて下さい。Git Repositoryビューの中のBranches→Local→masterを右クリックしてMerge...を選択します。
Remote Trackingには自動的にorigin/master
が選択されるはずです。Mergeをクリックして下さい。(訳注: 作業ブランチにmasterの変更を取り込む場合は、origin/masterを自分で選択する)
(訳注: 競合している場合は)result:conflict
と表示されるはずです。
競合しているファイルを開くと、古いsk000l >>>> ==== <<<<スタイルで競合箇所が示されます。ファイルを編集して競合を解決し、保存します。
'Git Staging'(Gitステージング)ビューを開くと、変更した(訳注: 競合していた)ファイルが'Unstaged Changes'(ステージされていない変更)に表示されます。右クリックして'Add to Index'を選択してください。
これをファイルごとに繰り返します。
そして'Git Staging'ビューからコミットしてプッシュします。Git/Eclipseはあなたがリモートリポジトリに加えられていた変更をあなたのローカルのmasterにマージしたことを認識し、non-fast-forwardエラーは回避されます。