我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
当前回答
在这种情况下,"重置"命令就是你最好的朋友:
git reset --soft HEAD~1
重置将会将您当前的 HEAD 分支倒带到指定的修改 。 在以上的例子中, 我们希望回到当前修改之前的修改 - 有效地取消我们最后的承诺 。
注意 -- soft 旗号 : 这样可以确保未撤销修改的更改被保存。 在运行命令后, 您会发现您的工作副本中这些更改是未承诺的本地修改 。
如果您不想保留这些更改, 请使用 -- 硬旗 。 确定只有在您确定不再需要这些更改时才这样做 。
git reset --hard HEAD~1
其他回答
当地承诺
git reset --soft HEAD~1
或者如果你们记不起来,那末,你们可以使用
git rm --cached <file>
用于被推动的 承诺
从存储库历史中删除文件的适当方式是使用 git 过滤器- blanch 。 也就是说,
git filter-branch --index-filter 'git rm --cached <file>' HEAD
但我建议您谨慎使用此命令 。 更多信息请访问 git- filter- branch- blanch- 1 手册页面 。
这将添加一个新的承诺, 删除所添加的文件 。
git rm yourfiles/*.class
git commit -a -m "deleted all class files in folder 'yourfiles'"
或者您可以重写历史来撤销最后一项承诺 。
警告:此命令将永久删除对.java 文件( 和任何其他文件) 所做的修改 -- 从工作目录中删除所有修改 :
git reset --hard HEAD~1
硬重置为 HEAD-1 将把您的工作副本设定为您错误实施前的行为状态 。
删除已被推到 Github 的错误行为
git push origin +(previous good commit id):(branch name)
请指定您想要在 Github 重置的最后一个好承诺代号 。
例如,如果最近的承诺 ID 错误, 请用分支名称在 Git 命令上方指定前一个承诺 ID 。
您可以使用 git 日志获得上一个承诺 ID 。
为了撤销最后的本地承诺, 在不丢弃更改的情况下, 我在 ~ /. gitconfig 中有这个便用别名
[alias]
undo = reset --soft HEAD^
然后,我只需要使用Git 解码,这是超级容易记住的。
git reset --soft HEAD~1
软性 : 这将只从本地端删除承诺, 并保留文件所做的更改 。
git reset --hard HEAD~1
git push origin master
硬性 : 这将从本地和远程删除承诺, 并删除文件中所做的更改 。