为了研究前一次提交所引入的效果,我想将其反向应用到我的工作副本并使用代码.
我通过创建和应用补丁的工作流程进行了管理,但是想知道这是否可以更轻松地完成.
git checkout -b "tmp-fiddle"
git diff -R -p d9fd2bb^ d9fd2bb > patch_to_examine.patch
# Manually edit the patch a little
git apply patch_to_examine.patch
Run Code Online (Sandbox Code Playgroud)
请注意,我没有查看git revert或git rebase -i因为这些会引入新的提交或更改历史记录:我只是希望引入的更改d9fd2bb不适用于我当前的工作副本.
Gar*_*eth 48
怎么样git revert -n?
Run Code Online (Sandbox Code Playgroud)-n --no-commit通常,该命令会自动创建一些提交日志消息,提交哪些提交已被还原.此标志应用将命名提交还原到工作树和索引所需的更改,但不进行提交.此外,使用此选项时,索引不必与HEAD提交匹配.恢复是针对索引的开始状态完成的.
在将多个提交效果还原到行中的索引时,这非常有用.
dos*_*ter 14
另一种有效的方法是git show | git apply -R. -R代表反向差异。
这适用于任何差异,所以你可以做 git diff ... | git apply -R
或反转藏匿处 git stash show -p stash@{0} | git apply -R