首页 > 解决方案 > 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

标签: bashgitunixgithub

解决方案


这只是一个建议,但为此您可以使用已经存在的工具,例如myrepo

只需注册您的存储库:

mr register ~/gitHub/repo_1
mr register ~/gitHub/repo_2
...

然后,如果您想推送所有存储库,只需键入:

mr push

如果你想把它们全部拉出来,输入

mr update

等等...阅读文档。


推荐阅读