如何清除Git中的工作目录?
当前回答
按git状态重置指定文件:
git checkout <filename>
重置文件夹
git checkout <foldername>/*
其他回答
按git状态重置指定文件:
git checkout <filename>
重置文件夹
git checkout <foldername>/*
到目前为止,所有答案都保留了本地提交。如果你真的很认真,你可以放弃所有的本地提交和所有的本地编辑:
git reset --hard origin/branchname
例如:
git reset --hard origin/master
这使得您的本地存储库完全匹配原始文件的状态(不包括未跟踪的文件)。
如果你只是在阅读命令后不小心这样做了,而不是它所做的:),使用git reflog来查找旧的提交。
将特定文件重置为最后提交状态(丢弃特定文件中未提交的更改):
git checkout thefiletoreset.txt
git状态输出中提到了这一点:
(use "git checkout -- <file>..." to discard changes in working directory)
重置整个存储库到上次提交的状态:
git reset --hard
为了删除未跟踪的文件,我通常只删除工作副本中的所有文件(但不包括.git/文件夹!),然后进行git重置——这很难,只留下已提交的文件。
更好的方法是使用git clean(警告:使用-x标志会导致git删除被忽略的文件):
git clean -d -x -f
将删除未跟踪的文件,包括目录(-d)和被git忽略的文件(-x)。将-f参数替换为-n以执行演练或-i用于交互模式,它将告诉您将删除什么。
相关链接:
Git-reset手册页 Git-clean手册页 git准备好“清理未跟踪的文件”(正如Marko张贴的) 堆栈溢出问题“如何从当前Git工作树中删除本地(未跟踪的)文件”
Use:
git clean -df
虽然宣传得不好,但git clean真的很方便。Git Ready对Git clean有一个很好的介绍。
要切换到另一个分支,丢弃所有未提交的更改(例如,由于Git对行结束符的奇怪处理而导致的):
git checkout -f <branchname>
我有一个工作副本,有数百个更改过的文件(但空git diff——ignore-space-at-eol),我无法用我在这里读的任何命令摆脱,git checkout <branchname>也不会工作,除非给出-f(或——force)选项。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别