在 Git 中重置所有暂存文件的最简单方法是啥?
Posted
技术标签:
【中文标题】在 Git 中重置所有暂存文件的最简单方法是啥?【英文标题】:What is the simplest way to reset all staged files in Git?在 Git 中重置所有暂存文件的最简单方法是什么? 【发布时间】:2015-11-19 05:01:46 【问题描述】:我之前使用git reset
处理单个文件,但我经常发现自己必须在提交之前取消暂存多个文件。是否有取消暂存所有暂存文件的命令?我在文档 (http://git-scm.com/docs/git-reset) 上找不到它。
【问题讨论】:
【参考方案1】:试试这个:
git reset HEAD .
当你执行git status
时,Git 应该真正写出要做什么
6:16:17 proj_main ~/git/proj_main$ git status
On branch proj_main
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: sub_proj/.project
【讨论】:
谢谢 Matej。虽然 GIt 没有给我这个选项。我不确定我的 Git 会发生什么,但每次发生合并冲突时,我什至没有触摸的几个文件会在暂存区域显示,准备提交。这很奇怪。我必须取消暂存这些文件,因为我不知道 Git 在做什么。git reset --soft HEAD
无效。重置软意味着您将 HEAD 重置为另一个提交,而不是索引或工作目录。在您的情况下,您要将 HEAD
重置为 HEAD
的提交。所以没有效果。
@René 你是对的。我再次检查并修复了我的答案【参考方案2】:
git status
通常会显示选项,例如
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: someFile.txt
modified: someDir/someOtherFile.txt
因此,如果您想取消暂存所有文件,只需执行 git 建议的操作
git reset HEAD
编辑
从 Git 2.23 开始,您可以使用 git restore --staged
。 git restore
还可以从另一个提交 (-s
) 恢复工作树文件并以交互方式运行 (-p
)。还有更多有趣的选项可用。请参阅git restore
documentation。
【讨论】:
git restore --staged :/
将工作树中的所有暂存文件恢复为“未暂存”状态。然后git restore :/
丢弃未暂存的更改。请注意,使用git mv
创建的所有文件仍然存在。【参考方案3】:
我使用SourceTree 客户端。它具有 Stage 和 UnStage 所有文件的选项。您也可以将它与命令行结合使用。
【讨论】:
以上是关于在 Git 中重置所有暂存文件的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在单击按钮时重置/重新初始化/重新启动 UIViewController 视图的最简单(正确)方法是啥?
在 Vim 中,将文件中的所有行合并为一行的最简单方法是啥?