2017-02-27 178 views
0

我们为我们的包管理器使用了一个自定义版本的作曲家。如何为某些子文件夹检查'git status'?

我们添加到项目中的每个包实际上都是一个.git回购。
当然,这些文件夹(/ Vendor/packages /)被父回购忽略,当我编写git status时,它只显示当前回购的状态。

有没有办法检查我项目下.git仓库的状态。
我在寻找类似git submodule foreach status的东西。

回答

0

你可以在Vendor/packages使用find子目录和他们中的每一个执行git status

find Vendor/packages -type d -maxdepth 1 -print -exec sh -c '(echo {} && cd {} && git status && echo)' \;

这是在假设下,供应商的所有文件夹/包是自己的git回购协议。

+0

太复杂了。在下面的答案中使用单线解决方案。 – CodeWizard

+0

@CodeWizard:如果供应商系统下的文件夹不是git子模块,git子模块会工作吗,只是没有以任何方式链接到父git仓库的git仓库? –

+0

如果不是子模块,你不能在repo里面购买repo。 git将无法正常工作。 – CodeWizard

0
git status . 

将向您显示当前文件夹及其子文件夹的文件状态,但不显示子模块的状态。

要列出下,子模块的改变,你必须使用以下行:

# use the build in submodule foreach option 
git submodule foreach --recursive git diff --name-status 

git submodule foreach [--recursive]
计算一个任意的shell命令每签出子模块

如果给出--recursive,遍历子模块递归(即给定的shell命令也在嵌套子模块中计算)。

+0

很抱歉,如果我没有让自己清楚,我们没有使用Git的子模块功能。软件包通过_composer_下载,但未作为子模块添加到父回购站。他们只是父母回购忽略的文件夹。 – zehreken

+0

所以你忽略了你想检查他们的状态的文件夹?如果它们被忽略,那么所有文件都未被跟踪。你期望找到什么差异? – CodeWizard

+0

在处理项目时,我有时会发现自己正在编辑程序包中的代码。我有时会将我的更改移至原始回购站,有时会直接从项目回购站推送。顺便提一下,他们两个都有相同的遥控器。我不确定这是否是好的做法。 – zehreken

0

你可以试试这个

git status directory_path 

为前

git status upload/