#1 楼
首先,重置所有更改,这将撤消对跟踪文件所做的任何更改并恢复已删除的文件:
git reset HEAD --hard
其次,删除新文件
这将删除所有新文件自上次提交以来添加的内容:
git clean -fd
保留由于
.gitignore
而未跟踪的文件;它们不会被删除警告:使用
-x
而不是-fd
会删除忽略的文件。您可能不想这样做。评论
@Adam:有时您可能还希望-x选项也进行git clean,这也指示它也删除被忽略的文件。
–卡斯卡贝尔
2011年1月8日,0:35
如果要保留由于.gitignore而无法跟踪的文件,请小心使用git clean -fd命令。
–bitsoflogic
2014年9月23日下午13:12
@Levinaris:git clean -fd的另一种方法是不会删除被忽略的文件。 -x将。
– Robert Siemer
15年1月13日在16:14
@RobertSiemer实际上,可以!如果您有完全由忽略文件组成的任何文件夹,它将删除那些文件夹,从而删除忽略的文件。考虑一个.gitignore文件,就像这里的文件:stackoverflow.com/q/25554504/456645。在此示例中,假定某些文件夹没有PHP文件。 git clean -fd将删除那些文件夹和未跟踪的文件。使用git版本1.9.1测试
–bitsoflogic
15年1月20日在17:24
但是为什么根本需要第二次“清理”呢?
–希里(Shirish Herwade)
17年8月4日在9:44
#2 楼
在上一次提交之后,如何撤消对目录的所有更改,包括删除添加的文件,重置已修改的文件以及重新添加删除的文件?
您可以使用以下方法撤消对跟踪文件的更改:
git reset HEAD --hard
您可以使用以下方法删除未跟踪的文件:
git clean -f
您可以使用以下方法删除未跟踪的文件和目录:
git clean -fd
,但是您不能撤消对未跟踪文件的更改。
您可以删除忽略和未跟踪的文件和目录
git clean -fdx
,但是您不能撤消对忽略文件的更改。
还可以将
clean.requireForce
设置为false
:git config --global --add clean.requireForce false
以避免在使用
-f
时使用--force
(git clean
)。 br />评论
太棒了,正是我所需要的。感谢您对所有相关命令的比较!
–字幕
17年1月25日在16:56
#3 楼
在这种情况下有两个命令可以使用,root> git reset --hard HEAD〜1
root> git push -f
有关更多git命令的信息,请参见此页面
评论
git push -f与问题无关,在这种情况下,很危险
– mustache1up
20-2-11在22:19
评论
还原到先前的Git提交的可能副本@nawfal可能是重复的,但与相应的“如何还原git存储库”相比,“在最后一次提交后重置所有更改”匹配的搜索条件(在Google中搜索的单词)更多。至少对于像我这样不以英语为母语的人而言:d