我想知道是否有一种方法可以快速逆转特定的提交。
diff
我可以在两次提交之间生成一个或HEAD
查看差异。
我如何只反转那些帅哥中的一个(或者更好的是,一组特定的帅哥)?
我想知道是否有一种方法可以快速逆转特定的提交。
diff
我可以在两次提交之间生成一个或HEAD
查看差异。
我如何只反转那些帅哥中的一个(或者更好的是,一组特定的帅哥)?
git checkout -p $REF -- path/to/file
例如,
git checkout -p HEAD^ myfile
引用名称或提交 ID在哪里$REF
指定要从中获取文件状态的提交。例如,要选择性地还原上次提交中所做的更改,请使用HEAD^
.
git difftool $REF -- /path/to/file
where$REF
是指定要从中获取文件状态的提交的引用名称或提交 ID。例如,要选择性地还原上次提交中所做的更改,请使用 HEAD^。
@cdhowie 已经回答了这个问题,但我发现使用交互式 difftool 比较好,比如meld
选择性地恢复旧的代码/行,特别是如果代码中有一个新引入的、难以发现的错误。
要从特定提交中恢复一个或多个大块,请这样做 -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 ...
不会始终从特定提交中恢复大块,而是从某个文件状态中选择部分 - 可能会丢失其他后续提交中的更改。