如何清除我的本地工作目录在git?
我怎样才能清除我的工作目录在git?
将特定文件重置为上次提交状态(放弃特定文件中未提交的更改):
git checkout thefiletoreset.txt
这是在git status
输出中提到的:
(use "git checkout -- <file>..." to discard changes in working directory)
要将整个存储库重置为上次提交状态:
git reset --hard
要删除未跟踪的文件,我通常只删除工作副本中的所有文件(而不是 .git/
文件夹!),然后执行git reset --hard
,只保留提交的文件。
更好的方法是使用git clean
:( 警告 :使用下面的-x
标志将导致git删除被忽略的文件。)
git clean -d -x -f
将删除未跟踪的文件,包括目录( -d
)和被git( -x
)忽略的文件。 将-f
参数replace为-n
来执行干运行或-i
交互模式,它会告诉你什么将被删除。
相关链接:
- git-reset手册页
- git-clean手册页
- git准备好“清除未跟踪的文件” (正如Marko所发布的)
- Stackoverflow的问题“你如何从你的git工作副本中删除未跟踪的文件?
git clean -df
编辑:这不是广告,但git clean
是非常方便的。 Git Ready有一个很好的介绍git clean
。
更新:根据下面评论中的build议删除了
x
标志
迄今为止的所有答案都保留了本地提交。 如果你真的认真,你可以放弃所有的本地提交和所有的本地编辑:
git reset --hard origin/branchname
例如:
git reset --hard origin/master
这使得您的本地存储库与原始状态完全匹配 (除了未跟踪的文件之外)。
如果你在阅读命令后不小心做到了这一点,而不是它做了什么:),使用git reflog来find你的旧提交。
您可以创build一个包含空白工作副本的提交。
这是一种普遍安全的非破坏性方法,因为它不涉及使用任何暴力重置机制。 首先,您将所有托pipe内容都用git checkout empty
隐藏起来,然后您可以自由手动审查并删除所有未被pipe理的内容。
## create and initialize a temporary repo with an empty working copy ( mkdir ./temp-repo && cd ./temp-repo && git init touch ./temp-file && git add . && git commit -m "almost empty" git rm ./temp-file && git commit -m "empty" git tag empty ) ## fetch the history from the temporary repo git remote add empty ./temp-repo && git fetch --tags empty && git remote rm empty gvfs-trash ./temp-repo ## delete the temporary repo ## clear the working copy git checkout empty
您的工作副本现在应该清除任何托pipe内容。 剩下的都是非托pipe文件和.git
文件夹本身。
重新填充您的工作副本…
git checkout master ## or whatever branch you will be using
要切换到另一个分支,放弃所有未提交的更改(例如,由Git对行结尾的奇怪处理导致):
git checkout -f <branchname>
我有一个工作副本,有数百个已更改的文件(但空的git diff --ignore-space-at-eol
),我无法使用我在这里读取的任何命令将其清除,而git checkout <branchname>
won'工作,要么 – 除非给予-f
(或--force
)选项。
按照git status的build议重置一个特定的文件:
git checkout <filename>
重置文件夹
git checkout <foldername>/*