我的 Mac 上有许多 GitHub 存储库,我想要一种定期自动拉取它们的方法。我是这样做的。
任何经常阅读我的华夫饼的读者都会知道我不是盒子里最锋利的工具。 Git 是我的许多项目工作流程的核心部分,但作为一个香肠,我经常忘记在本地做一些工作之前从 GitHub 获取最新的更改。然后,Git 不可避免地会让自己感到困惑,并且它成为解决冲突的整体。
因此,我需要一种方法来绕过我的香肠,定期自动从我的所有存储库中提取。我最终分两步完成了此操作:
- 创建一种一次性从所有存储库中提取数据的方法
- 自动化拉动
从 GitHub 拉取
我的第一反应是构建一个 shell 脚本,然后使用 cron 定期运行该脚本。一切都非常简单,这样的事情就可以工作:
#!/bin/sh cd ~/GitHub/ cd 100daystooffload.com/ git pull cd .. cd 512kb.club/ git pull cd .. cd kevquirk.com/ git pull cd ..
你明白了。此解决方案的问题是每次添加或删除存储库时都需要更新脚本。
我太懒了,所以我打电话给Kagi ,看看是否有更好的选择。
有。
find ./GitHub -mindepth 1 -maxdepth 1 -type d -print -exec git -C {} pull \;
老实说,我不太明白这个命令的全部作用,但从我收集到的信息来看,它会在我的./GitHub
文件夹(这是我所有存储库所在的位置)中查找,然后最多查找 1 个文件夹级别深入,并执行git pull
。
它并不完美,因为它尝试从./GitHub
中的每个文件夹中提取内容,其中一些不是 git 存储库。但这没关系,它只是跳过它们。
当我在那里时,我继续向.zshrc
文件添加一个别名,以便我可以根据需要快速运行命令:
nano .zshrc alias pullall="find ./GitHub -mindepth 1 -maxdepth 1 -type d -print -exec git -C {} pull \;"
现在,当我从终端窗口运行pullall
命令时,我的 Mac 将拉取所有内容。好的。
自动化事物
好的,现在我已经解决了拉动问题,我想自动化它。我本可以选择 Mac Automator,但说实话,那东西让我很困惑。相反,我选择了老式的crontab
。
所以我打开终端并输入crontab -e
却看到了一个 Vim 窗口。是啊,管它呢;我是一个纳米人。所以首先我必须解决这个问题。
后来又进行了一次快速 Kagi 搜索,我将其添加到我的.zshrc
文件中,以强制 Nano 作为终端中的默认编辑器:
# Set default file editor to nano export EDITOR=nano export VISUAL="$EDITOR"
我重新启动了终端窗口(因此重新加载了.zshrc
)并再次尝试了crontab -e
。哈扎!它加载到 Nano 中,我为我的 pull 命令添加了一个每 2 分钟运行一次的 cronjob:
# Pulls git repos every 2 mins */2 * * * * find ./GitHub -mindepth 1 -maxdepth 1 -type d -print -exec git -C {} pull \;
测试它是否有效
最后要做的就是在实时网站上进行更改,推送它,然后等待。大约一分钟后,更改悄然出现在我的本地存储库中,因此一切都按预期进行。好吧。
这就是关于如何在 Mac 上自动拉取多个 Git 存储库的快速指南。所有这些都非常基本并且很容易在网上找到,但我想我会将其合并到一个帖子中,更多地供我使用而不是其他任何东西。
感谢您通过 RSS 阅读这篇文章。 RSS 很棒,您也很擅长使用它。 ❤️
原文: https://kevquirk.com/blog/automatically-pulling-multiple-repos-from-github-on-mac