我运行了git状态,它告诉我一切都是最新的,没有本地更改。
然后我做了几次连续的改变,意识到我想扔掉一切,回到原来的状态。这个命令能帮我吗?
git reset --hard HEAD
我运行了git状态,它告诉我一切都是最新的,没有本地更改。
然后我做了几次连续的改变,意识到我想扔掉一切,回到原来的状态。这个命令能帮我吗?
git reset --hard HEAD
当前回答
如果您只想删除所有更改,请执行git签出。这是一种更快更简单的方法。
其他回答
要还原对工作副本所做的更改,请执行以下操作:
git checkout .
或者等效地,对于git版本>=2.23:
git restore .
要还原对索引所做的更改(即您添加的更改),请执行此操作。警告:这将重置所有未推送的提交到master!:
git reset
要还原已提交的更改,请执行以下操作:
git revert <commit 1> <commit 2>
要删除未跟踪的文件(例如,新文件、生成的文件):
git clean -f
或未跟踪的目录(例如,新的或自动生成的目录):
git clean -fd
查看git-relog。它将列出它记住的所有状态(默认为30天),您只需签出您想要的状态即可。例如:
$ git init > /dev/null
$ touch a
$ git add .
$ git commit -m"Add file a" > /dev/null
$ echo 'foo' >> a
$ git commit -a -m"Append foo to a" > /dev/null
$ for i in b c d e; do echo $i >>a; git commit -a -m"Append $i to a" ;done > /dev/null
$ git reset --hard HEAD^^ > /dev/null
$ cat a
foo
b
c
$ git reflog
145c322 HEAD@{0}: HEAD^^: updating HEAD
ae7c2b3 HEAD@{1}: commit: Append e to a
fdf2c5e HEAD@{2}: commit: Append d to a
145c322 HEAD@{3}: commit: Append c to a
363e22a HEAD@{4}: commit: Append b to a
fa26c43 HEAD@{5}: commit: Append foo to a
0a392a5 HEAD@{6}: commit (initial): Add file a
$ git reset --hard HEAD@{2}
HEAD is now at fdf2c5e Append d to a
$ cat a
foo
b
c
d
在此处添加另一个选项。
我指的是标题:还原本地更改。它还可以应用于未准备提交的更改。
在这种情况下,您可以使用:
git restore <file>
返回到以前的状态。
前方危险:(请阅读评论。执行我的回答中提出的命令可能会删除更多内容)
完全删除所有文件,包括我必须运行的目录
git clean -f -d
我搜索了一个类似的问题,
想要放弃本地提交:
克隆了存储库(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点。