コミットの特定のハンクをすばやく元に戻す方法があるかどうか疑問に思っています。
diff
2つのコミットの間に生成するかHEAD
、違いを確認できます。
それらのハンクの1つだけ(またはさらに良いのは、特定のハンクのセット)を元に戻すにはどうすればよいですか?
コミットの特定のハンクをすばやく元に戻す方法があるかどうか疑問に思っています。
diff
2つのコミットの間に生成するかHEAD
、違いを確認できます。
それらのハンクの1つだけ(またはさらに良いのは、特定のハンクのセット)を元に戻すにはどうすればよいですか?
git checkout -p $REF -- path/to/file
例えば、
git checkout -p HEAD^ myfile
$REF
ファイルの状態を取得するコミットを指定する参照名またはコミットIDはどこにありますか。たとえば、最後のコミットで行われた変更を選択的に元に戻すには、を使用しますHEAD^
。
git difftool $REF -- /path/to/file
ここで、$REF
は、ファイルの状態を取得するコミットを指定する参照名またはコミットIDです。たとえば、最後のコミットで行われた変更を選択的に元に戻すには、HEAD^を使用します。
meld
この質問はすでに@cdhowieによって回答されていますが、特にコードに新しく導入された見つけにくいバグがある場合は、コードの古いハンク/行を選択的に復元するようなインタラクティブなdifftoolを使用する方がやや良いと思います。
特定のコミットから1つ以上のハンクを元に戻すには、次のようにします-add -p
本質的に使用します:
git revert --no-commit <commit>…
git reset # unstage things
git add -p [OPTIONS] [<pathspec>…] # choose hunks interactively
git restore . # wipe the rest (in root directory)
... maybe further changes ...
git commit [--fixup] ...
将来のgitバージョンはgit revert -p
直接サポートする可能性があります...
注:のようなメソッドgit checkout/restore -p ...
は、特定のコミットからハンクを一貫して元に戻すのではなく、特定のファイル状態からパーツを選択します。他のコミットで変更が失われる可能性があります。
以前のコミットから削除されたファイルを回復するために、私はここで答えを使用しました:
git checkout <deleting_commit>^ -- <file_path>