在Git中取消暂存所有已删除的文件

时间:2010-11-22 20:04:28

标签: git delete-file git-add git-stage

我想取消暂存所有文件删除。有一个简单的方法吗?

我想将其应用于所有删除的文件模式。

4 个答案:

答案 0 :(得分:23)

git status --porcelain的输出是为这样的任务构建单行和脚本的好方法:

git status --porcelain | awk '$1 == "D" {print $2}' | xargs git reset HEAD

答案 1 :(得分:1)

如果从git status返回的路径/文件名包含 space个字符,可以修改对awk的调用以包含 整个(引用的)路径/文件名,包括空格:

git status --porcelain|awk '$1 == "D" {print substr($0, index($0,$2))}'|xargs git reset HEAD

答案 2 :(得分:0)

以防其他人在PowerShell中使用git,这是@ jefromi的PowerShell版本的优秀答案:

git status --porcelain | where { $_.StartsWith(" D") } | foreach-object { git reset HEAD $_.replace(" D ", "") }

答案 3 :(得分:-1)

请参阅“取消暂存分阶段文件”一节in this book