我有一个项目,我在其中运行git init
。几次提交之后,我做了git status
,告诉我一切都是最新的,并且没有本地更改。
然后我做了几个连续的更改,并意识到我想把所有东西扔掉,然后回到原来的状态。这个命令会为我做吗?
git reset --hard HEAD
如果要还原对工作副本所做的更改,请执行以下操作:
git checkout .
如果要还原对索引所做的更改(即已添加的更改),请执行此操作。 警告这会重置你掌握的所有未提交的提交! :
git reset
如果要还原已提交的更改,请执行以下操作:
git revert <commit 1> <commit 2>
如果要删除未跟踪的文件(例如,新文件,生成的文件):
git clean -f
或未跟踪的目录(例如,新的或自动生成的目录):
git clean -fd
注意:您可能还想运行
git clean -fd
如
git reset --hard
不会删除未跟踪的文件,因为 git-clean 将从被跟踪的根目录中删除不在 git 跟踪下的任何文件。警告 - 小心这个!首先使用 git-clean 进行干运行是有帮助的,看看它会删除什么。
当您收到错误消息时,这也特别有用
~"performing this command will cause an un-tracked file to be overwritten"
当你和你的朋友都添加了一个同名的新文件时,可能会发生这种情况,一个是正在更新工作副本,但他首先将它提交到源代码控制中,而你不关心删除未经跟踪的副本。
在这种情况下,执行干运行还将帮助显示将被覆盖的文件列表。
如果您想恢复所有更改并且与当前远程主控器保持同步(例如,您发现主 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.