我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
当前回答
只需撤销最后一项承诺 :
git reset --soft HEAD~
或撤销上次承诺前的时间 :
git reset --soft HEAD~2
或撤销先前的任何承诺 :
git reset --soft <commitID>
(您可以通过 git reflog 获得对帐号)
当您撤销上一个任务时, 记住要用
git clean
更多信息,请查看文件:git-resets。
其他回答
认为我们已经有了 code. txt 文件。 我们对其做了一些修改并承诺。 我们可以以三种方式撤销此承诺, 但首先, 您应该知道什么是预置文件... 一个预设文件是一个可以承诺的文件。 如果您运行 git 状态, 此文件将会显示为绿色颜色, 如果它没有被预设用于承诺, 将会显示为红色颜色 :
调
意思是如果您承诺更改, 此文件中的更改没有被保存 。 您可以在您的舞台上添加此文件, 添加 code. txt , 然后进行更改 :
调
撤消上次承诺 :
现在,如果我们想要在不做其他任何更改的情况下撤销承诺, 我们可以使用 git 重设 -- soft HEAD * 如果我们想要撤销承诺及其更改( THIS 是危险的, 因为您的更改将会丢失) , 我们可以使用 git 重置 -- 硬 HEAD * 如果我们想要撤销承诺并删除舞台上的更改, 我们可以使用 git 重置 -- mixed HEAD* 或短格式的 git 重置 HEAD***
“ 将工作树重置为最后一次承诺 ”
git reset --hard HEAD^
"清除工作树上的未知文件"
git clean
见 - Git 快速参考
注意: 此命令将删除您上一个任务, 请谨慎使用! git 重置 -- hard 比较安全 。
这将添加一个新的承诺, 删除所添加的文件 。
git rm yourfiles/*.class
git commit -a -m "deleted all class files in folder 'yourfiles'"
或者您可以重写历史来撤销最后一项承诺 。
警告:此命令将永久删除对.java 文件( 和任何其他文件) 所做的修改 -- 从工作目录中删除所有修改 :
git reset --hard HEAD~1
硬重置为 HEAD-1 将把您的工作副本设定为您错误实施前的行为状态 。
取决于您是否已经公开了您的前一次承诺( 插入到您的远程仓库 ) :
如何撤销本地任务
比方说我承诺了当地, 但现在我想取消那个承诺。
git log
commit 101: bad commit # Latest commit. This would be called 'HEAD'.
commit 100: good commit # Second to last commit. This is the one we want.
要让一切恢复到上次承诺之前的状态 我们需要重置承诺 重置承诺
git reset --soft HEAD^ # Use --soft if you want to keep your changes
git reset --hard HEAD^ # Use --hard if you don't care about keeping the changes you made
现在 git 日志将显示我们最后的承诺已被删除 。
如何撤销公开承诺
如果您已经公开了承诺, 您将会想要创建一个新的承诺, 它将“ 撤销” 您对上一个承诺( 当前 HEAD) 所做的更改 。
git revert HEAD
你们的更改将恢复,并准备好你们承诺:
git commit -m 'restoring the file I removed by accident'
git log
commit 102: restoring the file I removed by accident
commit 101: removing a file we don't need
commit 100: adding a file that we need
更多信息,请查看 Git Basics - 撤销一些事情 。
使用此命令
git checkout -b old-state 0d1d7fc32