撤消"git add <dir>"?

neo*_*eye 171 git git-reset

我使用命令"git add dir"错误地添加了文件.我还没有运行"git commit".有没有办法从提交中删除此目录及其中包含的所有内容?

我试过了git reset dir,但没用.显然git reset file是撤消它的方法.但是我有这么多文件,所以时间很少.

Ari*_*zis 259

要从索引中删除目录及其中的所有内容,

git rm --cached -r dir
Run Code Online (Sandbox Code Playgroud)

--cached开关git rm仅对索引进行操作,而不是触摸工作副本.该-r开关使其递归.

  • "从索引中删除整个暂存目录"对git命令的解释稍微好一点,因为对于像我这样的git初学者,该命令看起来非常像是否甚至可以删除文件系统上的目录.只是品味问题. (11认同)
  • 这就是为什么我将“--cached”开关加粗。尽管如此,我还是编辑了答案以限定它仅适用于索引。 (3认同)

kni*_*ttl 18

你会想要使用git rm --cached -r <dir>.此命令将从索引中删除暂存的目录内容.

如果已经跟踪了目录,则必须手动查找新旧文件并取消暂存...

可能在此git reset <dir>之后运行以重置目录中的现有(和已经跟踪的)文件


mar*_*cog 11

使用findxargs:

find dir -type f | xargs git reset
Run Code Online (Sandbox Code Playgroud)


mrd*_*le1 8

$ git reset <dir>
Run Code Online (Sandbox Code Playgroud)

取消暂存我暂存的所有文件和文件夹:

$ git add <dir>
Run Code Online (Sandbox Code Playgroud)

以上内容已通过以下方式确认:

$ git status
Run Code Online (Sandbox Code Playgroud)

要么

$ git diff --staged --name-only 
Run Code Online (Sandbox Code Playgroud)

在git add命令之后,以确认文件和文件夹为“要提交的更改”。

运行git reset命令后,我使用了:

$git diff --staged --name-only
Run Code Online (Sandbox Code Playgroud)

确认先前暂存的文件夹或文件仍未暂存。