2016-04-11 9 views
1

私は自分のシャドウを飛び越えて、最終的に基本レベルでgitを学びます。私の前にいる無数の初心者のように、私は遠隔変更でマージした後にプッシュしようとすると "合併してマークする"という恐ろしい "egit rejected non-fast-forward"エラーに遭遇しました。egを使って変更したリモートリポジトリワークフローへの適切なプッシュ

私はすでにこの問題の解決策を見つけたようですが、面倒で、eclipse比較エディタと互換性がありません。私はこのようにそれを行う:

    私の変更をプッシュ
  1. は - 比較エディターは今<、=と>マーカーが含まれています - エラー
  2. プルの変更「をegitは非-早送り拒否」が発生します。比較エディタの右側が空で、左に自分の変更が含まれていて、遠い相反する変更が互いに上にあるので、快適に比較することはできません。これはかなり役に立たないです。
  3. 手作業でテキストを編集して、欲しい部分を巧みに選択します。

私は適切な方法を使用していますか?
比較エディタの両側を正しく使用する方法はありますか?

私は私のバージョンを見たいと思っています。それは、マージ中に常に現在のリモートバージョンとの違いです。

答えて

1

私はエイジに慣れていませんが、マージの競合を処理しているようです。他の誰かがあなたが取り組んでいる支店へのプッシュアクセスを持っていると仮定してもいいですか?起こりそうなことは、彼らがブランチに新たな変更を加えることであり、それが拒絶の原因となっています。そして、引っ張ることによって、あなたは解決しなければならないいくつかの相反する変化を合併しようとしています。 Hereは、同じ問題のより良い説明です。

悪い点は、マージ競合は常に手動で解決する必要があることです。良いニュースは、egitがこれらの競合を解決するためのマージツールを提供するように見えるということです。 This egit wiki pageあなたが探している比較ツールを見つけるのに役立つかもしれません。基本的には、競合のあるファイルを選択し、チーム>マージツール を選択してください。


問題が解決しない場合、あなたは常に自信を持って(= <、>、および)ちょうどGitはマージマーカーが使用することにより、マージの競合を解決することができます。それらがGitでどのように使われているかの詳細な説明はRead thisを参照してください。基本的には、<<<以下、===のいずれかが変更になります。 ===のコードと>>>のコードは変更になります。そして、あなたはどちら側を選ぶか、それをさらにカスタマイズすることができます。すべてを削除して、コードを自分で書き直してください。

例を示します。これは、マージの競合を解決するときに表示されることがあります。上の部分はあなたのローカルHEADでコミットしていることを示し、コミットのバージョンです。そして===下記の底は、origin/masterでコミットあなただけに引っ張らバージョンを示しています。

<<<<<< HEAD:test.html 
<h1>This is my version</h1> 
====== 
This is their version 
>>>>>> origin/master:test.html 

を唯一のバージョンを維持するには、単にこれでそのブロック全体を置き換えることができます。それは矢印のようなもので、等号があなたに選択肢を与えています。トップ(あなたのもの)、またはボトム(それらのもの)が欲しいですか?

<h1>This is my version</h1> 

また、両方の組み合わせが必要な場合もあります。ここでは、<h1> htmlタグをそのまま使用していますが、テキストを使用しています。

<h1>This is their version</h1> 

これは、マージの競合を解決するのに役立ちます。 Gitの詳細については、git-scmをお勧めします。

関連する問題