2017-02-27 175 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/