2016-05-25 9 views
1

私は大きく複雑なgit diffを持っています。それは文字列 "fubar"を含む行を削除した約1200件を持っています(それが重要な場合は引用符で囲みます)。私がしたいのはパッチを適用することですが、パッチを削除しないでください。git patchから壊れずに行を削除する

次のフォームのすべての行をパッチファイルから削除しようとしました。問題は、行番号が間違っているため、パッチが壊れていることです。行番号を編集するのに手間がかかりませんが、問題の周りにまともな方法があるのだろうかと思います。

私は何を削除:

- (whatever here) "fubar" (whatever else here) 
+0

何あなたは入力しますか? 'git apply'ですか?あなたが入力した完全なコマンドを貼り付けることができますか?あなたは 'git add -p'コマンドに慣れています – Asenar

+0

はあまりにも遅れています-_-そしてあなたには何のエラーメッセージがありますか? – Asenar

+0

xxxのパッチが破損しています –

答えて

0

は基本的に、あなたは完全なラインをコピーする必要があり、その後、(-とラインの開始時にスペースを交換することにより)最初の文字«削除»、と変更を加えて2番目のものを追加する(+に置き換えることを意味する)。 diffでは、最初の列は行ステータス(追加、削除、または変更なし)に関するインジケータです。

「行xxxで壊れたパッチは、」おそらく、スペースが欠落している、またはあなたが代わりに

2

(マイナス記号-で)削除としてそれをマークするのあなたはにパッチをしたい場合は「文字通り」の行を削除した意味行を削除しない場合は、行の先頭の-をスペースで置き換える必要があります。あなたのパッチでは、そこに文脈のために残っている変更されていない行があります。

置き換えます

- (whatever here) "fubar" (whatever else here) 

(whatever here) "fubar" (whatever else here) 

は(変更されたラインのテキストはまだ-がスペースだけでなく、と交換したことが確認され、オリジナルと整列しているかに注目してくださいと削除されました)

パッチをよりよく理解するには、次の例をご覧ください。

diff --git a/test.txt b/test.txt 
index 67179f2..9c17455 100644 
--- a/test.txt 
+++ b/test.txt 
@@ -2,6 +2,8 @@ Line 1 
Line 2 
Line 3 
Line 4 
+Line 4.5 
+Line 4.6 
Line 5 
Line 6 
Line 7 
@@ -10,8 +12,6 @@ Line 9 
Line 10 
Line 11 
Line 12 
-Line 13 
-Line 14 
Line 15 
Line 16 
Line 17 
@@ -19,7 +19,7 @@ Line 18 
Line 19 
Line 20 
Line 21 
-Line 22 
+Line 22 the cops 
Line 23 
Line 24 
Line 25 

最初の行:

diff --git a/test.txt b/test.txt 
index 67179f2..9c17455 100644 
--- a/test.txt 
+++ b/test.txt 

ことを教えて:差分の懸念は、我々はaにラベルを付けるのバージョンでtest.txtを提出し、我々はbにラベルを付けるのバージョンでは、同じファイルtest.txt

  • バージョンaのファイルは、67179f2のハッシュとバージョンbのファイルが、9c17455のハッシュ(これらはコミットハッシュではなく、オブジェクトハッシュであると誤解されていない場合)の下に保存されます。
  • -は、バージョンaであり、+はバージョンbを意味します。

それから塊を持っている:

@@ -2,6 +2,8 @@ Line 1 
Line 2 
Line 3 
Line 4 
+Line 4.5 
+Line 4.6 
Line 5 
Line 6 
Line 7 
  • -2,6は、2行目から始まる、バージョンa 6行を表す手段と

    +Line 4.5 
    +Line 4.6 
    
  • +2,8それは2

実際行から始まる、バージョンb 8行を表す手段、我々は+ラインから見ることができる2つの行、Line 4.5Line 4.6を添加しました

文脈のために表示される他の修正されていない線が、文脈線としてそれらをラベル付けするためのスペースでどのように表示されるかに注目してください。

パッチを変更してLine 4.6を追加しない場合は、対応する+行を削除する必要があります。私たちの第二のhunkで

@@ -2,6 +2,7 @@ Line 1 
Line 2 
Line 3 
Line 4 
+Line 4.5 
Line 5 
Line 6 
Line 7 

@@ -10,8 +12,6 @@ Line 9 
Line 10 
Line 11 
Line 12 
-Line 13 
-Line 14 
Line 15 
Line 16 
Line 17 
あなたは7行ではなく、8で終わるように、しかし、あなたはまた、あなただけの1行を追加するためのラインは、塊でカウントを補正しなければなりません
  • -10,8は、行番号10から始まるバージョンaの8行を表します。
  • +12,6は、それがために、以前の塊によって追加した2本のラインのライン12で開始線12

始まる、バージョンb 6行を表すことを意味します。通常は、1211に調整する必要があります。これは、以前のハンクに1行しか追加しないためですが、実際には、コンテキスト行が修正された実際の行を識別するのに役立つからです。

13行目を迷っているだけなので、14行目を削除したくない場合は、14行目をそこに保存しておく必要があります。だから、空間に-を変更し、行数(あなたが7行ではなく、6で終わる)訂正:

最後に
@@ -10,8 +12,7 @@ Line 9 
Line 10 
Line 11 
Line 12 
-Line 13 
Line 14 
Line 15 
Line 16 
Line 17 

、最後の塊:

@@ -19,7 +19,7 @@ Line 18 
Line 19 
Line 20 
Line 21 
-Line 22 
+Line 22 the cops 
Line 23 
Line 24 
Line 25 

それがLine 22を変更していますがLine 22 the cops、古い行を削除し、変更された行を追加します。以前のハンクは、合計で追加した行数と同じ数の行を削除し、1行を追加して1行を削除するため、7行の両方の行に関係しているため、前と後の19行目から開始されます。

さまざまな方法で変更を変更できます。変更されたラインの内容を変更します。

@@ -19,7 +19,7 @@ Line 18 
Line 19 
Line 20 
Line 21 
-Line 22 
+Line 22 THE COPS 
Line 23 
Line 24 
Line 25 

や余分な行を追加します。それはもう、ライン22を変更していないため、簡略化することができ

@@ -19,7 +19,8 @@ Line 18 
Line 19 
Line 20 
Line 21 
-Line 22 
+Line 22 
+ the cops 
Line 23 
Line 24 
Line 25 

を:

@@ -19,7 +19,8 @@ Line 18 
Line 19 
Line 20 
Line 21 
Line 22 
+ the cops 
Line 23 
Line 24 
Line 25 
関連する問題