git - 如何清除 Git我的本地工作目录?

  显示原文与译文双语对照的内容

这个问题已经有了如下答案:

如何清除git中的工作目录?

时间:

要将特定文件重置为last-committed状态( 放弃特定文件中未提交的更改):


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:


git clean -d -x -f

将删除未跟踪的文件,包括目录( -d ) 和被 git ( -x ) 忽略的文件。 -f 参数替换 -n 执行dry-run或者 -i 交互模式,它会告诉你将被删除。

相关链接:

 
git clean -df

 

编辑:不是好广告但 git clean 是非常方便的。 Git准备好了一个git clean 编辑器简介。

更新:根据下面评论中的建议删除 x 标志

目前所有的答案都保留了本地提交。 如果你是真的认真,你可以抛弃所有本地提交和本地编辑通过:


git reset --hard origin/branchname

例如:


git reset --hard origin/master

这使得你的本地存储库精确匹配原点( 未跟踪的文件)的状态。

如果你只是在读取命令之后不小心执行了这个操作,那么使用 git reflog来查找你的旧提交。

你可以创建包含空工作副本的提交。

这是一个通常安全的non-destructive方法,因为它不涉及任何brute-force复位机制。 首先,使用 git checkout empty 隐藏所有托管内容,然后你可以自由地查看和删除任何非托管内容。


## 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

你的工作副本现在应该清除任何托管内容。 剩下的是非托管文件和 .git 文件夹本身。

要re-populate的工作副本。。


git checkout master ## or whatever branch you will be using

switch 到另一个分支,丢弃所有未提交的更改( 例如。 由git产生的异常处理行结束:


git checkout -f <branchname>

我有一个工作副本与数以百计的改变文件( 但 git diff --ignore-space-at-eol 为空) 这我不能摆脱我读这里的任何命令,和 git checkout <branchname> 不会工作,要么——除非考虑到 -f ( 或者 --force ) 选项。

...