如何在我的工作副本中排除非指数的变更?
当前回答
如果您处于子模块的情况下,没有其他解决方案工作,请尝试:
查看问题是什么(可能是一个“脏”案例)使用: git diff 删除 stash git 子模块更新
其他回答
尝试了上面的所有解决方案,但仍然无法摆脱新的,未完成的文件。
使用 git clean -f 删除这些新文件 - 但是要小心! 注意力选项。
如果所有的步骤文件实际上已经完成,那么分支可以简单地重新设置,例如从您的GUI,大约有三个鼠标点击:分支,重新设置,是的!
因此,我经常在实践中做的事情,以逆转不需要的地方变化,就是承诺所有的好事,然后重新设置分支。
如果好事是在单一的承诺中承诺,那么你可以使用“修改最后的承诺”将其带回被推翻或不推翻,如果你最终想承诺它有点不同。
这可能不是你正在寻找问题的技术解决方案,但我认为这是一个非常实用的解决方案. 它允许你选择性地排除未完成的变化,重新调整你不喜欢的变化,并保持你所做的变化。
因此,简而言之,我只是承诺,分支重新设置,并修改最后的承诺。
如果您不感兴趣保留未完成的更改(特别是如果未完成的更改是新的文件),我发现这个方便:
git diff | git apply --reverse
您可以创建自己的标签,描述如何以描述的方式进行。
我用下一个字符来排除变化。
排除工作树中的一个(列表)文件(s)中的变化
discard = checkout --
然后,你可以使用它作为附加,以排除所有变更:
discard .
或者只是一个文件:
discard filename
否则,如果你想删除所有的更改,以及未追踪的文件,我使用一个混合的检查和清洁:
清理和排除工作树中的变更和未追踪文件
cleanout = !git clean -df && git checkout -- .
所以使用是简单的如下:
cleanout
现在在下一个GitHub repo中可用,其中包含许多联盟:
HTTPS://github.com/GitAlias/吉塔利亚
只用:
git stash -k -u
这将阻止未跟踪的变更和未跟踪的文件(新文件)并保持未跟踪的文件。
它比重新设置/检查/清洁更好,因为你可能希望他们后来回来(由 git stash pop)。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别