2011-09-08 14 views
0

gitでファイルの最後に改行の違いを引っ張る(マージする)と、しばしば競合が発生する。git:ファイル末尾の改行でマージ競合する

競合は次のように探して出てくる:

diff --cc httpdocs/about/faq.php 
index 0ae3963,b5eb519..0000000 
--- a/httpdocs/about/faq.php 
+++ b/httpdocs/about/faq.php 
@@@ -212,4 -211,4 +212,8 @@@ $_SESSION['activePage'] = 'about' 
     </div><!-- end wrap --> 

-<?php require RESOURCE_PATH."page_elements".SLASH."footer.php"; ?> 
++<<<<<<< HEAD 
+<?php require RESOURCE_PATH."page_elements".SLASH."footer.php"; ?> 
++======= 
++<?php require RESOURCE_PATH."page_elements".SLASH."footer.php"; ?> 
++>>>>>>> 564e069cccfad98f818ec878a3b2526fd9430f8a 

さらに悪いです。私は手動でファイルを解決して矛盾したファイルを追加した後、(ファイルの最後に関連して)コミットするようには見えないので、私が再度プルを行うと、まったく同じ競合が発生します。どんな解決策ですか?

+0

ファイルを解決して追加したら、コミットできるはずです。実行した正確なコマンドは何ですか? –

答えて

1

これらの違いは、異なるOSが行を終了させるのとは異なるアイデアを持っているという結果になります。

gitは、通常、core.eolの設定値をデフォルトで 'native'に設定することで、それらをうまく処理します。しかし、何らかの理由で開発者がその設定をしていない場合や、WindowsからUNIX形式のファイルをコミットする場合、またはその逆の場合は、これらの問題が発生する可能性があります。

問題の原因を見つけてそこで処理することをお勧めします。それ以外の場合は、core.eol(lf/crlf)の値を異なるように設定して修正できます。プロジェクト全体ではなく特定のパスでのみ発生する場合は、そのパスのgitattributesファイルを定義する方がよい場合があります。

+0

thanks - core.eolを試しますが、リポジトリはLinuxマシン間でプッシュ/プルされただけです – EoghanM

+0

誰かがWindowsマシンからコピーしたファイルをコミットしたことがあります。 – yhager

+0

はい、おそらくコードベースの元々の開発者(gitに入れられる前の)は、Windows上で開発されました。 – EoghanM

関連する問題