如何撤消两次提交之间的更改?

Posted

技术标签:

【中文标题】如何撤消两次提交之间的更改?【英文标题】:How can i undo changes between two commits? 【发布时间】:2020-07-28 00:17:30 【问题描述】:

我想在两次提交之间恢复一个文件更改,

commit 1 hash: abcde1....
   some code changes

commit 2 hash : abcde2....
   some code changes

commit 3 hash : abcde3....
   some code changes

.....

我可以使用git checkout abcde3 -- file/to/restore 并恢复到提交 3,但丢失了提交 1 的更改, 我怎样才能结帐只提交 2 个更改?

【问题讨论】:

【参考方案1】:

您可以简单地使用git revert

还原提交 2,这将创建一个新的提交,取消由所述提交 2 引入的任何更改。

如果git revert(在提交级别运行,not 用于单个文件)还原了太多文件,您可以reset the files you did not want reverted。

git revert --no-commit <commit hash> # Revert, don't commit it yet
git reset # Unstage everything
git add yourFilesToRevert # Add the file to revert
git commit -m "commit message"
git reset --hard # Undo changes from the part of the revert that we didn't commit

【讨论】:

@rujgii 确切地说:这就是我的答案的第二部分所针对的:仅针对 one 文件恢复特定提交 (commit2) 的能力。

以上是关于如何撤消两次提交之间的更改?的主要内容,如果未能解决你的问题,请参考以下文章

如何计算 Git 中两次提交之间更改的行数?

sh 列出两次提交之间更改的文件

sh 列出两次提交之间更改的文件

git:显示两次提交之间所有更改的文件

获取远程服务器上两次提交之间的所有提交?

Git 导出某两次提交之间的差异文件