如何以非递归方式获取单个文件夹的git-status(不显示其子文件夹)

pdkcd3nj  于 2023-04-28  发布在  Git
关注(0)|答案(2)|浏览(224)

如何获取单个文件夹的git-status非递归
这不是this question的重复,因为它们解决了如何git-status单个文件夹子目录,例如。例如,接受的答案是使用git status .,它返回递归结果。

hc8w905p

hc8w905p1#

进入所需的文件夹并用途:

git status .

这将显示您现在所在的给定文件夹的状态。
另一个选项是用途:

git ls-files -t -o -m <desired path>

这将显示所有已更改但未更新(取消暂存)或未跟踪给定目录的文件。

非递归方式:

在所需的文件夹中,使用git status + grep的组合来过滤结果

git status | grep -v /
wgxvkvu9

wgxvkvu92#

解决方案是pathspec的定义(参见man pathspec)。它允许非递归的glob模式,甚至排除模式和属性过滤。
本质上:可以给出以:开头的特殊路径,并在实际路径之前给出一些“魔术签名”。签名有长的和短的形式。
对于您的情况,下面的工作很好:

git status ':(glob)mypath/*'
  • 这是长格式:(*)…,其中*是一个关键字。(glob在这种情况下。)glob没有短的。*
    **注意单引号,**使 *git本身 * glob,而不是shell。(如果你选择的目录有很多条目,这可能会导致向git传递大量参数。)

您还可以通过编写以下代码来明确排除子目录内容:

git status ':^mypath/*/*'
  • 这里我们可以使用简写形式:?…,其中?是一个关键字符。(^在这种情况下。:^的长形式是:(exclude)。*

此变体可能具有略微不同的含义。(我还没有证实这一点,但它可能包括对实际子目录本身的更改,但不包括对其中文件的更改。)

相关问题