如何放弃工作副本中不在索引中的更改?
如何放弃工作副本中不在索引中的更改?
另一种更快捷的方法是:
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 . 需要在回购的根目录中完成。