尝试此操作以还原本地分支中未提及的所有更改
$ git reset --hard HEAD
但是如果你看到这样的错误:
fatal: Unable to create '/directory/for/your/project/.git/index.lock': File exists.
您可以导航到'.git'文件夹,然后删除index.lock文件:
$ cd /directory/for/your/project/.git/ $ rm index.lock
最后,再次运行命令:
您可能不一定希望/需要在工作目录中存储您的工作/文件,而只是完全摆脱它们。命令 git clean 会为你做这件事。
git clean
执行此操作的一些常见用例是 的 删除cruft 强> 由合并或外部工具生成或删除其他文件,以便您可以运行干净的构建。
请记住,您将需要非常谨慎地使用此命令,因为它旨在从本地工作目录中删除未跟踪的文件。如果您在执行此命令后突然改变主意,则无法返回查看已删除文件的内容。更安全的替代方案是执行
git stash --all
这将删除所有内容,但保存所有内容。之后可以使用此存储。
但是,如果您确实要删除所有文件并清理工作目录,则应执行
git clean -f -d
这将删除任何文件以及由于该命令而没有任何项目的任何子目录。在执行之前要做的聪明事 git clean -f -d 命令是运行
git clean -f -d -n
这将显示执行后将删除的内容的预览 git clean -f -d
所以这里是从最具侵略性到最具攻击性的选项的总结
的 选项1 强> :在本地删除所有文件(最具侵略性)
的 选项2 强> :预览上述影响(预览最具攻击性)
的 选项3 强> :存储所有文件(最不积极的)
`git stash --all`
简单地说
git stash
它将删除你所有的本地chages。你也可以稍后说
git stash apply
我搜索了类似的问题,
想扔掉当地的承诺:
以下是:
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.
在阅读了大量答案并尝试它们之后,我发现了各种边缘情况,这意味着有时候它们并没有完全清理工作副本。
这是我目前使用的bash脚本,它一直有效。
#!/bin/sh git reset --hard git clean -f -d git checkout -- HEAD
从工作副本根目录运行。
我遇到了类似的问题。 解决方案是使用 git log 查找哪个版本的本地提交与远程版本不同。 (例如版本是 3c74a11530697214cbcc4b7b98bf7a65952a34ec )。
git log
3c74a11530697214cbcc4b7b98bf7a65952a34ec
然后用 git reset --hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec 恢复变化。
git reset --hard 3c74a11530697214cbcc4b7b98bf7a65952a34ec
如果要还原对工作副本所做的更改,请执行以下操作:
git checkout .
如果要还原对索引所做的更改(即已添加的),请执行此操作。 的 警告这会重置你掌握的所有未提交的提交! 强> :
git reset
如果要还原已提交的更改,请执行以下操作:
git revert <commit 1> <commit 2>
如果要删除未跟踪的文件(例如,新文件,生成的文件):
git clean -f
或未跟踪的目录(例如,新的或自动生成的目录):
git clean -fd
注意:您可能还想运行
如
git reset --hard
将 不 删除未跟踪的文件,其中git-clean将从被跟踪的根目录中删除不在git跟踪下的任何文件。警告 - 小心这个!首先使用git-clean运行干运行是有帮助的,看看它会删除什么。
当您收到错误消息时,这也特别有用
~"performing this command will cause an un-tracked file to be overwritten"
当你和你的朋友都添加了一个同名的新文件时,可能会发生这种情况,一个是更新工作副本,但他首先将它提交到源代码控制中,而你不关心删除未跟踪的副本。
在这种情况下,执行干运行还将帮助显示将被覆盖的文件列表。