git apply failed

2132 ワード

回転:http://blog.csdn.net/aaronzzq/article/details/6955893
 
git version 1.6.0.4
いくつかの新米はGitに接触し始めたばかりで、核心倉庫の「純潔」を維持するために、多すぎて無関係な情報が倉庫に誤って提出されないようにしています.
時には合併の衝突に出会うことがあって、正常な原因は普通は直ちに新しいバージョンをダウンロードして衝突を生んだので、特殊な1時(点)の原因は手作業でpatchの内容を修正して招いたのです.時には注釈を見ても正確ではないので、思わず変えてしまいました.時にはGeanyが保存している時には自動的にpatchの中の行末スペースをなくしました.時にはファイルの回車フォーマット、BOMなどが変動しました.つまり、patchを合併する時には、patchを生成する「原稿」が見つけられないと、普通衝突が発生します.
$ git am 0001-BUG-Sybase.patch
Applying: CHG:   Sybase      ,         
error: patch failed: source.php:38
error: source.php: patch does not apply
Patch failed at 0001.
When you have resolved this problem run "git am --resolved".
If you would prefer to skip this patch, instead run "git am --skip".
To restore the original branch and stop patching run "git am --abort".
最初はちょっとぼんやりしていましたが、衝突がないので、どこで注意したらいいですか?am操作で問題が発生したら、まず手でapplyを作ります.
$ git apply --reject 0001-BUG-Sybase.patch
Checking patch source.php...
error: while searching for:
        //   
        //          
error: patch failed: source.php:38
Applying patch source.php with 1 rejects...
Rejected hunk #1.
このようにして、衝突していないファイルを先に合併して、残りは衝突してマークしました.まず出力を見てください.error:while searching for:このコードが衝突していると説明しています.error:patch failed:source.php:38衝突したコードクリップの開始行番号を指定しました.それに応じて、patchにはこのような一節があります.
diff --git a/source.php b/source.php
index 8770441..4e77b8a 100644
--- a/source.php
+++ b/source.php
@@ -38,27 +38,23 @@ class Site extends Module
        //   
        //          
また、source.php.rejファイルも生成されます.中には上記のような衝突で結合できないコード断片もあります.
現在、このコードの中で衝突原因を探して、ファイルを修正します.source.php.rejは参考が終わったら削除できます.修正した後、git addでsource.phpをバッファに追加します.他の競合がない場合はマージに成功したファイルも追加します.appy操作をする時にも変化が発生しました.
$ git add source.php
$ git add    apply       
最後:
$ git am --resolved
Applying: CHG:   Sybase      ,         
大功が成る
中間処理が乱れたら、git resetで回復すればいいです.だから合併patchはきれいなブランチで処理したほうがいいです.