2010-11-22 38 views

回答

23

git status --porcelain输出是建立任务单行和脚本这样一个伟大的方式:

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

真棒。谢谢!!看起来我需要学习一些grep,sed和awk。 – Jacko 2010-11-22 20:19:57

-1

请参阅'Unstaging a staged file'in this book

+0

链接现在看起来很有趣,但这本书很有帮助。 – hiwaylon 2012-10-08 15:33:31

1

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

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

万一别人用途git与PowerShell,这里是@ jefromi的优秀答案的PowerShell版本:

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