首页 > 解决方案 > Git 状态 - 仅列出有更改的直接子文件夹,而不是内部文件

问题描述

我喜欢使用 Git 来组织版本控制并在 Wordpress 中备份我的所有 Web 文件。

更新插件后,我想通过使用仅在直接子文件夹上获取更改列表git status。通常,如果执行 git status 将进行很长的更改,包括每个子文件夹的内部。我想要的是将结果限制为具有plugins目录内更改的子文件夹。

例如,这个 git 命令:

git status project_folder/wp-content/plugins

将导致:

plugins/wpml-translation-management/classes/translation-basket/
plugins/wpml-translation-management/classes/translation-dashboard/
plugins/acfml/assets/
plugins/acfml/classes/class-wpml-acf-attachments.php
plugins/wordpress-seo/js/dist/commons-921.min.js
plugins/wordpress-seo/js/dist/components-921.min.js

实际上, git 命令会生成一个非常长的行列表,如屏幕截图所示:

在此处输入图像描述

我想知道的是仅输出的 git 命令:

plugins/wpml-translation-management/
plugins/acfml/
plugins/wordpress-seo/

命令如下:

git status project_folder/wp-content/plugins --{display_only_direct_subfolders_with_changes}

标签: wordpressgitpluginsversion-controlgit-status

解决方案


试试这个:

git status --porcelain | awk '{print $2}' | xargs -n 1 dirname | uniq

awk '{print $2}' 

从列表中获取文件名

xargs -n 1 dirname 

从完整路径中提取目录

uniq

仅显示唯一目录

uniq当你有很多行时可能会慢一点


推荐阅读