我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
当前回答
$ git commit -m 'Initial commit'
$ git add forgotten_file
$ git commit --amend
重要的是要明白,当你正在修正你的最后一项承诺时,你并没有完全用新的、更好的承诺来取代它,新的承诺将旧承诺推开,而将新承诺置于其位置。 事实上,这好像前一项承诺从未发生,也不会出现在你的存储库历史中。
修改承诺的明显价值是略微改进你的最后一项承诺,而不会用表格“Oops,忘记添加文件”或“Darn,在最后一项承诺中确定打字符”等字词来模糊你的存储库历史。
2.4 Git Basics - 撤销事情
其他回答
git 重置 HEADn} 会重置您最后的 n 动作 。
对于重置, 对于上一个动作, 使用 git 重置 HEAD\\\ 1} 。
如果你打算完全撤销一个本地的承诺, 无论你改变什么你对承诺所做的, 如果你对此不担心, 执行以下命令。
git reset --hard HEAD^1
(此命令将忽略您的全部任务, 您的更改将完全从您的本地工作树中消失) 如果您想要撤销您的承诺, 但是您想要您在中转区域中的更改( 在像 Git 添加后一样执行前) , 那么执行以下命令 。
git reset --soft HEAD^1
现在,您的已执行文件将进入中转区域。 如果您想要提升文件, 您需要编辑错误的内容, 那么执行以下命令
git reset HEAD
现在承诺要将文件从舞台区域移到非舞台区域。 现在文件已准备编辑, 所以无论您改变什么, 您都想要去编辑和添加它, 并做出新的/ 新的承诺 。
更多(断链接) (存档版本)
键入 git 日志, 并找到最后一次承诺的散列代码, 然后输入 :
git reset <the previous co>
使用 reflog 查找正确状态
git reflog
安全前的路线
选择正确的 reflog( 以我为例, f3cb6e2) 和类型
git reset --hard f3cb6e2
在那之后 重置总部将重置 重置后,HEADLOGED
最终, 折叠图看起来像下面的图片
谈判最后定本
“ 将工作树重置为最后一次承诺 ”
git reset --hard HEAD^
"清除工作树上的未知文件"
git clean
见 - Git 快速参考
注意: 此命令将删除您上一个任务, 请谨慎使用! git 重置 -- hard 比较安全 。