35

コミットの特定のハンクをすばやく元に戻す方法があるかどうか疑問に思っています。

diff2つのコミットの間に生成するかHEAD、違いを確認できます。

それらのハンクの1つだけ(またはさらに良いのは、特定のハンクのセット)を元に戻すにはどうすればよいですか?

4

4 に答える 4

44
git checkout -p $REF -- path/to/file

例えば、

git checkout -p HEAD^ myfile

$REFファイルの状態を取得するコミットを指定する参照名またはコミットIDはどこにありますか。たとえば、最後のコミットで行われた変更を選択的に元に戻すには、を使用しますHEAD^

于 2010-11-22T17:27:59.580 に答える
1
git difftool $REF -- /path/to/file

ここで、$REFは、ファイルの状態を取得するコミットを指定する参照名またはコミットIDです。たとえば、最後のコミットで行われた変更を選択的に元に戻すには、HEAD^を使用します。

meldこの質問はすでに@cdhowieによって回答されていますが、特にコードに新しく導入された見つけにくいバグがある場合は、コードの古いハンク/行を選択的に復元するようなインタラクティブなdifftoolを使用する方がやや良いと思います。

于 2013-08-28T20:27:24.063 に答える
1

特定のコミットから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 ...は、特定のコミットからハンクを一貫して元に戻すのではなく、特定のファイル状態からパーツを選択します。他のコミットで変更が失われる可能性があります。

于 2021-01-28T12:12:47.353 に答える
0

以前のコミットから削除されたファイルを回復するために、私はここで答えを使用しました:

Gitリポジトリで削除されたファイルを見つけて復元する

git checkout <deleting_commit>^ -- <file_path>
于 2012-06-22T14:09:09.720 に答える