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

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

git reset --hard HEAD

当前回答

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

想要放弃本地提交:

克隆了存储库(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点。

其他回答

简单地执行-

git stash

它将删除所有本地更改。您也可以稍后通过执行-

git stash apply 

如果您在顶级项目目录中,请尝试以下操作:

git restore .

如果没有,则使用:

git restore :/

如果要还原子集的本地更改:

使用top pathspec magic还原所有工作树文件:git restore:/还原当前目录中的所有文件:gitrestore。文件类型(例如所有C源文件):git restore“*.C”

有关详细信息,请参阅git restore文档。

要删除未跟踪的文件:gitclean-f

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

在阅读了一堆答案并尝试之后,我发现了各种边缘情况,这意味着有时它们无法完全清理工作副本。

这是我目前使用的bash脚本,它一直有效。

#!/bin/sh
git reset --hard
git clean -f -d
git checkout HEAD

从工作副本根目录运行。

其他答案似乎太复杂了,所以这里有一个简单的解决方案对我有效:

如何放弃所有本地更改并将文件重置为当前分支上的最后一次提交?

# Execute on the root of the working tree...

# Discard all changes to tracked files
git checkout .

# Remove all untracked files 
git clean -fd

注意:忽略的文件将不受影响