如何在我的工作副本中排除非指数的变更?
当前回答
只用:
git stash -k -u
这将阻止未跟踪的变更和未跟踪的文件(新文件)并保持未跟踪的文件。
它比重新设置/检查/清洁更好,因为你可能希望他们后来回来(由 git stash pop)。
其他回答
作为一个提醒,更新的版本的 git 有恢复命令,这也是一个建议,当你在更改文件时输入 git 状态时:
(使用“吉特添加......”更新什么将被承诺)
(使用“git restore...”来删除工作目录的更改)
所以 git'restore' 是这个问题的现代解决方案. 在输入 'git status' 后,从 git 阅读建议总是很好的想法 :-)
git checkout .
这将拒绝对分支的任何未经订购的变更,如果发生任何变更,它不会重新设置它,这是方便的,当你做了一些变更并决定你不想要它们,因为某种原因,你没有承诺这些变更,它实际上只是重新检查分支,并拒绝任何当前未经订购的变更。
(必須在應用程式的根或家指,以便工作)
对于当前工作目录使用中的所有未输入的文件:
git restore .
对于特定文件的使用:
git restore path/to/file/to/revert
这与 git 交换器一起取代了过度加载的 git 支票(见这里),从而取消了论点的分歧。
如果一个文件既有步骤和未步骤的变化,则仅在 git diff 中显示的未步骤的变化将被转换。
之前 Git 2.23
对于当前工作目录中的所有未输入的文件:
git checkout -- .
对于一个特定的文件:
git checkout -- path/to/file/to/revert
在这里消除双重性(这被称为论点不双重性)。
如果所有的步骤文件实际上已经完成,那么分支可以简单地重新设置,例如从您的GUI,大约有三个鼠标点击:分支,重新设置,是的!
因此,我经常在实践中做的事情,以逆转不需要的地方变化,就是承诺所有的好事,然后重新设置分支。
如果好事是在单一的承诺中承诺,那么你可以使用“修改最后的承诺”将其带回被推翻或不推翻,如果你最终想承诺它有点不同。
这可能不是你正在寻找问题的技术解决方案,但我认为这是一个非常实用的解决方案. 它允许你选择性地排除未完成的变化,重新调整你不喜欢的变化,并保持你所做的变化。
因此,简而言之,我只是承诺,分支重新设置,并修改最后的承诺。
如果您处于子模块的情况下,没有其他解决方案工作,请尝试:
查看问题是什么(可能是一个“脏”案例)使用: git diff 删除 stash git 子模块更新
推荐文章
- Visual Studio Code: .git文件夹/文件隐藏
- “node_modules”文件夹应该包含在git存储库中吗
- 为什么git-rebase给了我合并冲突,而我所做的只是压缩提交?
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支