如何在我的工作副本中排除非指数的变更?


当前回答

如果您处于子模块的情况下,没有其他解决方案工作,请尝试:

查看问题是什么(可能是一个“脏”案例)使用: git diff 删除 stash git 子模块更新

其他回答

只用:

git stash -u

是的,容易。

如果你真的很关心你的<unk>子,那么你可以跟随吉特<unk>子下降,但在那个时候你更好地使用(从Mariusz Nowak):

git checkout -- .
git clean -df

然而,我喜欢 git stash -u 最好的,因为它“排除”所有跟踪和未跟踪的变化在一个命令。 但是 git checkout -. 只排除跟踪的变化, git clean -df 只排除未跟踪的变化... 并输入两个命令是太多的工作:)

git checkout -f


男子Git-Checkout:

F、 - 力量

在切换分支时,即使指数或工作树与头部不同,也会进行进展,用来消除当地的变化。

在从指数中查看路径时,不要错过未嵌入的输入;相反,未嵌入的输入被忽略。

无论你的 repo 是什么状态,你总是可以重新设置到任何以前的承诺:

git reset --hard <commit hash>

这将消除随后发生的所有变化。

要排除工作目录中的变化,使用 git checkout -- <file> -- 意味着当前分支参考的变化:-

https://www.baeldung.com/git-discard-unstaged-变更

我真的觉得这篇文章有用来解释什么时候使用什么命令: http://www.szakmeister.net/blog/2011/oct/12/reverting-changes-git/

有几个不同的案例:

如果您没有下载文件,则使用 git checkout. Checkout “更新工作树中的文件以匹配指数中的版本”。 如果文件没有下载(因此添加到指数)... 这个命令将基本上将文件转换为您最后的承诺。

我怀疑使用 git stash 是很受欢迎的选择,因为它有点不那么危险. 你总是可以回到它,如果你偶然在使用 git reset 时跳过太远。

请参见上面的文章以获得更多建议。