Git命令取消暂存所有新文件(按状态取消暂停)

时间:2015-02-16 15:09:14

标签: git

通常在分支之间进行合并操作后,我在舞台区域中找到了几个我不希望在舞台上默认拥有的新文件,而是我希望默认情况下不分阶段检查它们并将它们分级为一个经过审查后的一个。

所以问题是: 是否可以自动取消暂存所有新文件?

或更一般地说: 是否可以按其状态取消暂存一组文件?

例如,我在暂存区域中有这些内容:

A   fileA.txt
A   fileB.txt
U   fileC.txt

我想在一个命令中删除新添加的文件(fileA.txtfileB.txt),而不是手动执行每个文件的git重置:

git reset HEAD fileA.txt
git reset HEAD fileB.txt

解决问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

由于我在网上搜索没有运气,我使用git bash shell中的以下连接命令集创建了一个git别名:

git diff --name-status --cached | grep ^A | sed 's/^A[[:space:]]//g' | xargs -I {} git reset HEAD {}

别名(unstagenew)定义如下:

[alias]
    unstagenew = "!sh -c 'git diff --name-status --cached | grep ^A | sed 's/^A[[:space:]]//g' | xargs -I {} git reset HEAD {}'"

要适应其他状态,只需将正则表达式^A替换为:^M^D^U ...

虽然为了避免繁琐的输出,但在命令末尾添加了> /dev/null

我希望将来它可以作为reset命令的选项实现,或作为新的内置git命令实现。