2016-04-04 24 views
1

ファイルbar.txtがあります。このファイルでは、3行を削除してまだ何もステージングしていません。削除された行の1つをgit checkout -pで復元したい。行を削除するときにパッチチェックアウトを編集するにはどうすればよいですか?

例/バッシュ出力:

$ git checkout -p foo/bar.txt 
diff --git a/bin/custom/foo/bar.txt b/bin/custom/foo/bar.txt 
index 35483b7..e945cae 100644 
--- a/bin/custom/foo/bar.txt 
+++ b/bin/custom/foo/bar.txt 
@@ -1097,9 +1097,6 @@ mond.desc.refinements = Foo 
mond.desc.removeAttribute     = Foo 
mond.desc.resultsForStore     = Foo 
mond.no.results        = Foo 
-mond.page.CO.class.name      = Foo 
-mond.page.CO.parent.name      = Foo 
-mond.page.brands.parent.name     = Foo 
mond.page.cmscontent.datetime    = Foo 
mond.page.currentPage      = Foo 
mond.page.firstPage       = Foo 

私はのようなもの試してみた:

@@ -1097,9 +1097,8 @@ mond.desc.refinements = Foo 
mond.desc.removeAttribute     = Foo 
mond.desc.resultsForStore     = Foo 
mond.no.results        = Foo 
-mond.page.CO.class.name      = Foo 
mond.page.CO.parent.name      = Foo 
mond.page.brands.parent.name     = Foo 
mond.page.cmscontent.datetime    = Foo 
mond.page.currentPage      = Foo 
mond.page.firstPage       = Foo 

をしかし、それは動作しません。

答えて

2

これはおそらく他の方向に行くでしょう。 git add -pに変更すると、となり、コミットしてからgit checkout .に変更されます。実際にコミットしたくないのであれば、ちょうどgit reset HEAD^をコミットして元に戻し、作業領域の変更をそのまま残してください。

しかし、それはあなたが聞くと、ないほぼ


楽しみとして、そう...これは二重否定が混乱しないではない方法で混乱していますが、曲がり、あなたならば、それを管理することができるものではありませんあなたの脳は正しい。

のは、私たちが含む、ファイルnumbersを持っているとしましょう:

one 
two 
three 
four 

我々はtwothreeを削除し、のようなので、git diffに見える:

diff --git a/numbers b/numbers 
index f384549..a9c7698 100644 
--- a/numbers 
+++ b/numbers 
@@ -1,4 +1,2 @@ 
one 
-two 
-three 
four 

は、今、私たちはgit checkout -p numbersを実行します。 を破棄するかどうかを尋ねるプロンプトが表示されます。は、twothreeを差し引いた塊です。 yと言うと、減算は捨てられ、4つの数字をすべて含む完全なファイルが残されます。

one 
-two 
-three 
four 
Discard this hunk from worktree [y,n,q,a,d,/,e,?]? 

だから今、私たちはを破棄したい塊を作成するために、塊を編集します。つまり、実際にtwoだけを削除したい場合は、削除した変更を破棄したいと考えています。three直感に逆らって、つまり、あなたはを削除して-twoを削除することを意味します。

@@ -1,4 +1,2 @@ 
one 
-three 
four 

これはthreeの除去を破棄し、差分で私たちを残して、twoの除去を破棄しません:

diff --git a/numbers b/numbers 
index f384549..ceb5927 100644 
--- a/numbers 
+++ b/numbers 
@@ -1,4 +1,3 @@ 
one 
-two 
three 
four 

だから、まだあなたが塊から行を削除、要約します削除したければ。廃棄したい減算行はそのままにしておきます。あなたの編集された塊には、の線に減算(破棄)が含まれます。これには、のままで、削除したい行は含まれません。

+0

あなたが言うことは実際には意味がありますが、私はそれを複製できません。おそらく、これは私が「本当の」UNIXシステムの代わりにCygwinを使用しているためです。私の手を手に入れて試してみる。 – Alfergon

+0

あなたの説明を読んでいただきありがとうございます。ここでは** TL; DR:**を使用することができる要約を掲載しています**パッチを編集するときは、 '+'行をスペースに置き換えます)、破棄したい変更( '-'と' + '行)を残します。 – Walf

関連する問題