背景:我們目前有一個項目,它需要將多個git
存儲庫克隆到一個父文件夾中。我試圖寫一個腳本,這樣我可以運行git
操作,所有子目錄,使其更易於管理(如./gitall.sh status
/add
/reset
/commit -m "Foobar"
/push
/等Shell腳本>雙引號參數,只有它存在
腳本運作良好所有操作,直到我試圖執行一個./gitall.sh push
我收到錯誤fatal: remote part of refspec is not a valid name in
爲每個目錄,因爲有效的命令是git -C somedir push "" "" "" ""
(git
borks在後雙引號)。NB的參數需要用雙引號,以便捕獲參數rs與空格。
gitall.sh
find ./repo-* -type d -depth 0 -exec bash -c "git -C {} \"$1\" \"$2\" \"$3\" \"$4\" \"$5\"" \;
反正是有雙引號的參數,只有當它的存在? (或者無論如何告訴git
忽略尾部雙引號?)
如果你有這麼多的git倉庫需要自動與它們進行交互,你可能想重新考慮你的倉庫結構。 [考慮子模塊](https://git-scm.com/book/en/v2/Git-Tools-Submodules)。 – Schwern
如果您發現自己需要同時提交*多個存儲庫*,那麼您使用的是Git錯誤。如果您在多個存儲庫中有更改,並且它們在語義上屬於一起以便您想將它們提交到一起,那麼它們不應該放在不同的存儲庫中。如果你有獨立的存儲庫,那些應該獨立工作*,而不需要另一個存儲庫來了解它的歷史。 – poke
謝謝大家!這是我最終使用的。 https://gist.github.com/nickgrealy/3ad1d08a5efc4696a29c658f1842d89a#file-git-sh –