如何放弃工作副本中不在索引中的更改?
如何放弃工作副本中不在索引中的更改?
另一种更快捷的方法是:
git stash save --keep-index
包括 --include-untracked
如果你想彻底了解它。
在那之后,你可以用一个 git stash drop
命令,如果你喜欢。
对于所有未暂存的文件,请使用:
git checkout -- .
对于特定文件使用:
git checkout path/to/file/to/revert
确保在最后包括期间。
似乎完整的解决方案是:
git clean -df
git checkout -- .
git clean
删除所有未跟踪的文件(警告:虽然它不会删除.gitignore中直接提到的忽略文件, 它可能会删除驻留在文件夹中的被忽略文件)和 git checkout
清除所有未分级的更改。
这将检出当前目录的当前索引,从当前目录向下丢弃文件中的所有更改。
git checkout .
或者这会从索引中检出所有文件,覆盖工作树文件。
git checkout-index -a -f
git clean -df
通过从当前目录开始递归删除不受版本控制的文件来清除工作树。
-d
:除了未跟踪的文件外,删除未跟踪的目录
-f
:力量(可能没有必要取决于 clean.requireForce
设置)
跑 git help clean
看手册
我最喜欢的是
git checkout -p
这使您可以选择性地还原块。
也可以看看:
git add -p
由于没有答案表明我使用的确切选项组合,这里是:
git clean -dfx
git checkout .
这是使用过的在线帮助文本 git clean
选项:
-d
除了未跟踪的文件之外,删除未跟踪的目录。如果未跟踪的目录由不同的Git存储库管理,则默认情况下不会删除它。使用 -f
如果你真的想要删除这样的目录,请选择两次。
-f
如果是Git配置变量 clean.requireForce
未设置为 false
,除非给出,否则Git clean将拒绝删除文件或目录 -f
, -n
, 要么 -i
。 Git会拒绝删除目录中的目录 .git
子目录或文件,除非秒 -f
给出。
-x
不要使用忽略规则 .gitignore
(每个目录)和 $GIT_DIR/info/exclude
,但仍然使用给出的忽略规则 -e
选项。这允许删除所有未跟踪的文件,包括构建产品。这可以使用(可能与...结合使用) git reset
)创建一个pristine工作目录来测试一个干净的构建。
也, git checkout .
需要在回购的根目录中完成。