bash - Git:将项目文件夹推送到他们的存储库中
问题描述
我想编写一个脚本,在运行时将所有最后更新的文件推送到匹配的 GitHub 存储库中。
这是我尝试过的:
myPath=absolute_project_path
for i in $*
do
if [[ -d $myPath/$i ]]
then
cd $myPath/$i
git add ./*
git commit -m "update"
git remote set-url origin https://usr:pwd@github.com/username/$i.git
git push -f -u origin main
fi
done
但这是将所有文件夹添加到所有目录:所以 GitHub 中的 myrepo1 获取 myrepo1+myrepo2 文件,而 myrepo2 获取 myrepo1+myrepo2。
有人知道原因吗?
如果需要,有关测试的变通方法的说明:似乎每次都需要清空暂存区,然后再将文件更改为另一个存储库。
但我也试过这个:
- 备份了我的文件夹,然后运行git rm -f
,git add,git commit,git push(导致本地文件夹被删除),从备份中重新复制,并重新运行脚本,但没有帮助
- 还尝试手动删除 GitHub 上的所有文件夹并重新推送它们,但导致 Git 要求我进行拉取。但是一旦拉取完成(这导致我的本地文件被删除),从备份中重新复制和新的推送导致 Git 要求再次进行新的拉取......原因push -f
解决方案
这只是一个建议,但为此您可以使用已经存在的工具,例如myrepo。
只需注册您的存储库:
mr register ~/gitHub/repo_1
mr register ~/gitHub/repo_2
...
然后,如果您想推送所有存储库,只需键入:
mr push
如果你想把它们全部拉出来,输入
mr update
等等...阅读文档。
推荐阅读
- asp.net-mvc - 使用条件渲染视图
- javascript - AppScript/Javascript - 将 2 天添加到星期五的日期,以便跳过周末
- django - 如何在 Django 查询中通过 group by 获取 Sum
- javascript - 为什么 glob 数组返回空?
- java - Windows 中的 Java:以特定名称排序的目录中的文件
- scheme - 在 Chez Scheme 中查找操作系统和机器类型
- java - Visual Studio Code - Java 类型层次结构
- kubernetes - 如何为 Kubernetes 集群指定集群名称
- c++ - 编译 Java TD 客户端时生成错误
- html - 组件打开后按钮蓝色边框