我运行了git状态,它告诉我一切都是最新的,没有本地更改。
然后我做了几次连续的改变,意识到我想扔掉一切,回到原来的状态。这个命令能帮我吗?
git reset --hard HEAD
我运行了git状态,它告诉我一切都是最新的,没有本地更改。
然后我做了几次连续的改变,意识到我想扔掉一切,回到原来的状态。这个命令能帮我吗?
git reset --hard HEAD
当前回答
前方危险:(请阅读评论。执行我的回答中提出的命令可能会删除更多内容)
完全删除所有文件,包括我必须运行的目录
git clean -f -d
其他回答
如果您想恢复所有更改并更新当前远程主机(例如,您发现主机HEAD已向前移动,因为您已将其分支,并且您的推送被“拒绝”),您可以使用
git fetch # will fetch the latest changes on the remote
git reset --hard origin/master # will set your local branch to match the representation of the remote just pulled down.
简单地执行-
git stash
它将删除所有本地更改。您也可以稍后通过执行-
git stash apply
要还原对工作副本所做的更改,请执行以下操作:
git checkout .
或者等效地,对于git版本>=2.23:
git restore .
要还原对索引所做的更改(即您添加的更改),请执行此操作。警告:这将重置所有未推送的提交到master!:
git reset
要还原已提交的更改,请执行以下操作:
git revert <commit 1> <commit 2>
要删除未跟踪的文件(例如,新文件、生成的文件):
git clean -f
或未跟踪的目录(例如,新的或自动生成的目录):
git clean -fd
其他答案似乎太复杂了,所以这里有一个简单的解决方案对我有效:
如何放弃所有本地更改并将文件重置为当前分支上的最后一次提交?
# Execute on the root of the working tree...
# Discard all changes to tracked files
git checkout .
# Remove all untracked files
git clean -fd
注意:忽略的文件将不受影响
注意:您可能还想运行
git clean -fd
as
git reset --hard
不会删除未跟踪的文件,因为gitclean将从跟踪的根目录中删除不受git跟踪的任何文件。警告-小心!首先使用git clean运行一次试运行,看看它会删除什么。
当您收到错误消息时,这也特别有用
~"performing this command will cause an un-tracked file to be overwritten"
当你和你的朋友都添加了一个同名的新文件,但他先将其提交到源代码管理中,而你不在乎删除未跟踪的副本时,这可能会发生在做几件事时,其中一件事就是更新工作副本。
在这种情况下,干运行也将帮助您显示将被覆盖的文件列表。