2

我想撤消我对本地存储库和 Github 存储库上的文件所做的最后更改。( origin)

有人可以指点我做这件事的帖子/博客。

以下是我为提交更改所做的步骤:

git add -A
git commit -m "changed header"
git push origin master

如何撤消本地存储库和原点上的最后更改。

4

3 回答 3

5
  1. 进行硬重置以丢弃错误提交:

    git reset --hard HEAD^
    
  2. 力推

    git push -f origin master
    

注意:这reset --hard将丢弃您在最近一次提交中所做的任何更改,除非您在某个地方仍然有一个分支维护对该提交的引用。HEAD但是,如果您在短期内需要它,以前的仍然会在 reflog 中。为了非常安全,先创建一个备份分支:

git branch backup master

如果一切顺利,你可以git branch -D backup稍后。

于 2013-07-03T17:37:25.757 回答
1

不建议修改已推送的提交或远程分支的历史记录。如果你这样做,你可能会弄乱其他人的工作,或者至少让他们更难将他们的工作集成回远程分支(origin/master在这种情况下)。

在不使用 's 历史的情况下撤消您提交的内容的一种方法origin/master是创建一个新的提交来撤消您之前所做的操作,然后推送该新提交。

首先,创建一个包含与您在上次提交中所做更改相反的补丁:

git diff HEAD HEAD~1 > revert.patch

通过发出该命令,您告诉 Git 创建一个补丁文件,该文件描述如何从 HEAD 到 HEAD~1(即:从最后一次提交到上一次到最后一次提交)。

然后,您应用该补丁:

git apply revert.patch

这将应用该补丁并修改工作副本中的文件。您现在可以删除补丁文件 ( revert.patch)。

现在您的工作副本已恢复到上次提交之前的状态,但这些更改尚未进入 Git 存储库。您必须添加并提交它们。(使用git guior git add/ git commit,或您通常用来提交更改的任何方法)。

生成新提交后,只需推送它

git push origin master

现在你将拥有

A'  (master) - (origin/master)
|
B
|
A

您生成的新提交在哪里A',包含与您要恢复到的提交相同的文件 ( A)

于 2013-07-04T08:36:27.213 回答
0

我宁愿这样做git revert HEADgit push origin master除非有充分的理由使用reset

于 2013-07-03T18:08:19.817 回答