【发布时间】:2017-02-15 07:13:01
【问题描述】:
背景:我们目前有一个项目,需要将多个git 存储库克隆到一个父文件夹中。我正在尝试编写一个脚本,以便我可以在所有子目录中运行git 操作,以使其更易于管理(例如./gitall.sh status / add / reset / commit -m "Foobar" / push /等等。
脚本对所有操作都运行良好,直到我尝试执行 ./gitall.sh push
我收到每个目录的错误fatal: remote part of refspec is not a valid name in,因为有效的命令是git -C somedir push "" "" "" ""(git 结尾的双引号)。 注意参数需要双引号,以便捕获带有空格的参数。
gitall.sh
find ./repo-* -type d -depth 0 -exec bash -c "git -C {} \"$1\" \"$2\" \"$3\" \"$4\" \"$5\"" \;
是否有双引号参数,仅当它存在时? (或者无论如何告诉git 忽略尾随双引号?)
【问题讨论】:
-
如果你有这么多 git 存储库,需要自动与它们交互,你可能需要重新考虑你的存储库结构。 Consider submodules.
-
如果你发现自己需要同时提交多个仓库,那么你使用 Git 是错误的。如果您在多个存储库中进行了更改,并且它们在语义上属于一起,因此您希望将它们一起提交,那么它们首先不应位于不同的存储库中。如果您有单独的存储库,它们应该独立地工作,不需要另一个存储库来了解它的历史。
-
谢谢大家!这就是我最终使用的。 gist.github.com/nickgrealy/…