我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。

我如何从当地存储库撤销这些承诺?


当前回答

假设您是在视觉工作室工作, 如果您进入您的分支历史, 并查看您的所有承诺, 只需在承诺之前选择您想要撤销的事件, 右键单击它, 并选择回溯。 简单 。

其他回答

假设您在本地犯下错误, 并将其推到远程仓库。 您可以解开这两个命令的混乱 :

首先,我们需要纠正我们的地方储存库,回到我们所希望的承诺上来:

git reset --hard <previous good commit id where you want the local repository  to go>

现在,我们通过使用此命令,在远程仓库大力推动这项良好承诺:

git push --force-with-lease

强制选项的“ 租赁” 版本将防止意外删除您不知道的新承诺( 即上次拉动后来自其它来源 ) 。

您可以以两种方式撤销您的 Git 承诺 : 首先, 您可以使用 Git 返回, 如果您想要保留您的承诺历史 :

git revert HEAD~3
git revert <hashcode of commit>

第二是您可以使用 Git 重置, 这将删除您全部的委托历史, 并随心所欲地将您的头移到您想要的地方 。

git reset <hashcode of commit>
git reset HEAD~3

您也可以使用 -- hard 关键词, 如果有的话, 如果它开始有其他行为的话。 但是, 我建议在非常必要的时候使用它。

每个人都以如此复杂的方式发表意见。

如果您想要从分支中删除最后一项承诺, 最简单的方法是:

git reset --hard HEAD~1

现在,为了摆脱你最后的承诺,你必须

git push --force

这就对了,这会消除你最后的承诺

git reset --soft HEAD~1

软性 : 这将只从本地端删除承诺, 并保留文件所做的更改 。

    git reset --hard HEAD~1
    git push origin master

硬性 : 这将从本地和远程删除承诺, 并删除文件中所做的更改 。

撤消上次承诺 :

git 重设 -- s软 HEADQ 或 git 重置 -- s软 HEAD~

这将撤销最后一项承诺 。

在这里 -- 软意味着重置中。

HEAD~ 或 HEAD_ 意思是移动 在 HEAD 之前承诺。


替换上次承诺的新承诺 :

git commit --amend -m "message"

它将以新承诺取代最后一项承诺 。