前のページ

まだコミットしていない変更を一部だけ取り消 す時のコマンド

みなさんこんにちは、あべ いさぢです。

今回は「git add」はしていてまだコミットして(git commit -m )いない変更を一部だけ取り消す時のコマンドについて解説します。


git restore -p

色々とコミットしたけどこのコミットはやっぱりなかったことにしたい場合があると思います。

そんな時に効果を発揮すると思います。

下記のコマンドを叩きます。

git restore -p 「対象ファイルのパス」

すると例えば下記みたいな表示になります。(内容は書いたコードによって変わります)

diff --git a/app/Http/Controllers/DemoController.php b/app/Http/Controllers/DemoController.php
index 9ff6e309a..df7b58e4c 100644--- a/app/Http/Controllers/DemoController.php
+++ b/app/Http/Controllers/DemoController.php
@@ -485,13 +485,13 @@ private function demoMethod(string $argument)
                         'column' => $columnName,
                     ];-		} elseif ($columnName){-		    $keys['demo'][] = [-		        'column' => $columnName,+               } elseif ($columnName){+                   $keys['demo'][] = [+                        'column' => $columnName,
                     ];-		}+               }
             } elseif ($demo === 3 || $demo === 4) {
                 $test = $testMap[$testItem->test_value];(1/1) Discard this hunk from worktree [y,n,q,a,d,s,e,?]?

重要なのは「@@ -485,13 +485,13 @@」の部分です。

「@@ -485,13 +485,13 @@」の直下の行から「(1/1) Discard this hunk from worktree [y,n,q,a,d,s,e,?]?」の上の行までを削除するかを(1/1) Discard this hunk from worktree [y,n,q,a,d,s,e,?]?」で質問されているので「y」を入力して「Enter」を押すとコミットと修正したコードが削除されます。

今回は(1/1) Discard this hunk from worktree [y,n,q,a,d,s,e,?]?」の表示が1回しかなかったのですが「@@ -485,13 +485,13 @@」が複数ある場合はその回数だけ「Discard this hunk from worktree [y,n,q,a,d,s,e,?]?」が表示されます。

戻る