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


当前回答

我有一個奇怪的情況,在那裡一個檔案總是無關,這有助於我解決。

git rm.gitattributes git add -A git reset --hard

其他回答

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

git reset --hard <commit hash>

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

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

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

如果您想恢复未完成的文件,请使用 git restore --staged。

您可以创建自己的标签,描述如何以描述的方式进行。

我用下一个字符来排除变化。


排除工作树中的一个(列表)文件(s)中的变化

discard = checkout --

然后,你可以使用它作为附加,以排除所有变更:

discard .

或者只是一个文件:

discard filename

否则,如果你想删除所有的更改,以及未追踪的文件,我使用一个混合的检查和清洁:

清理和排除工作树中的变更和未追踪文件

cleanout = !git clean -df && git checkout -- .

所以使用是简单的如下:

cleanout

现在在下一个GitHub repo中可用,其中包含许多联盟:

HTTPS://github.com/GitAlias/吉塔利亚

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

有几个不同的案例:

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

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

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