我们为我们的包管理器使用了一个自定义版本的作曲家。如何为某些子文件夹检查'git status'?
我们添加到项目中的每个包实际上都是一个.git
回购。
当然,这些文件夹(/ Vendor/packages /)被父回购忽略,当我编写git status
时,它只显示当前回购的状态。
有没有办法检查我项目下.git仓库的状态。
我在寻找类似git submodule foreach status
的东西。
我们为我们的包管理器使用了一个自定义版本的作曲家。如何为某些子文件夹检查'git status'?
我们添加到项目中的每个包实际上都是一个.git
回购。
当然,这些文件夹(/ Vendor/packages /)被父回购忽略,当我编写git status
时,它只显示当前回购的状态。
有没有办法检查我项目下.git仓库的状态。
我在寻找类似git submodule foreach status
的东西。
你可以在Vendor/packages
使用find
子目录和他们中的每一个执行git status
。
find Vendor/packages -type d -maxdepth 1 -print -exec sh -c '(echo {} && cd {} && git status && echo)' \;
这是在假设下,供应商的所有文件夹/包是自己的git回购协议。
git status .
将向您显示当前文件夹及其子文件夹的文件状态,但不显示子模块的状态。
要列出下,子模块的改变,你必须使用以下行:
# use the build in submodule foreach option
git submodule foreach --recursive git diff --name-status
git submodule foreach
[--recursive]
计算一个任意的shell命令每签出子模块。如果给出
--recursive
,遍历子模块递归(即给定的shell命令也在嵌套子模块中计算)。
很抱歉,如果我没有让自己清楚,我们没有使用Git的子模块功能。软件包通过_composer_下载,但未作为子模块添加到父回购站。他们只是父母回购忽略的文件夹。 – zehreken
所以你忽略了你想检查他们的状态的文件夹?如果它们被忽略,那么所有文件都未被跟踪。你期望找到什么差异? – CodeWizard
在处理项目时,我有时会发现自己正在编辑程序包中的代码。我有时会将我的更改移至原始回购站,有时会直接从项目回购站推送。顺便提一下,他们两个都有相同的遥控器。我不确定这是否是好的做法。 – zehreken
你可以试试这个
git status directory_path
为前
git status upload/
太复杂了。在下面的答案中使用单线解决方案。 – CodeWizard
@CodeWizard:如果供应商系统下的文件夹不是git子模块,git子模块会工作吗,只是没有以任何方式链接到父git仓库的git仓库? –
如果不是子模块,你不能在repo里面购买repo。 git将无法正常工作。 – CodeWizard