我运行了git状态,它告诉我一切都是最新的,没有本地更改。

然后我做了几次连续的改变,意识到我想扔掉一切,回到原来的状态。这个命令能帮我吗?

git reset --hard HEAD

当前回答

我遇到了类似的问题。解决方案是使用gitlog来查找本地提交的版本与远程提交的版本不同。(例如,版本为3c74a11530697214cbcc4b7b98bf7a65952a34ec)。

然后使用git reset-hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec还原更改。

其他回答

在此处添加另一个选项。

我指的是标题:还原本地更改。它还可以应用于未准备提交的更改。

在这种情况下,您可以使用:

git restore <file>

返回到以前的状态。

我遇到了类似的问题。解决方案是使用gitlog来查找本地提交的版本与远程提交的版本不同。(例如,版本为3c74a11530697214cbcc4b7b98bf7a65952a34ec)。

然后使用git reset-hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec还原更改。

我搜索了一个类似的问题,

想要放弃本地提交:

克隆了存储库(gitclone)切换到dev分支(git checkout dev)做了几次提交(gitcommit-m“commit 1”)但决定放弃这些本地提交,返回远程(origin/dev)

以下情况也是如此:

git reset --hard origin/dev

检查:

git status  

        On branch dev  
        Your branch is up-to-date with 'origin/dev'.  
        nothing to commit, working tree clean  

现在,本地提交丢失,返回到最初的克隆状态,即上面的第1点。

如果您想恢复所有更改并更新当前远程主机(例如,您发现主机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 clean -fd

as

git reset --hard

不会删除未跟踪的文件,因为gitclean将从跟踪的根目录中删除不受git跟踪的任何文件。警告-小心!首先使用git clean运行一次试运行,看看它会删除什么。

当您收到错误消息时,这也特别有用

~"performing this command will cause an un-tracked file to be overwritten"

当你和你的朋友都添加了一个同名的新文件,但他先将其提交到源代码管理中,而你不在乎删除未跟踪的副本时,这可能会发生在做几件事时,其中一件事就是更新工作副本。

在这种情况下,干运行也将帮助您显示将被覆盖的文件列表。