linux 在本地对远程仓库执行git pull

linux 在本地对远程仓库执行git pull

假设:你的同事在Linux主机A上生成了一个git仓库S用来维护一堆配置文件,配置文件会经常发生变动。你编写了一个脚本并在Linux主机B上执行此脚本,这个脚本的执行需要读取你的同事在A上维护的配置文件,那么这个时候在B上克隆一个仓库S是一种可行的办法,这样你的脚本就只需要读取本地的配置文件。具体的步骤是这样的:

  • 首先,你需要执行类似下面的命令:
    git clone username@hostA:/path/to/repositoryS
    这条命令会将主机A上的git仓库S克隆到你刚刚执行命令的目录下,这时候,克隆仓库和源仓库S中的文件是一致的
  • 而当源仓库S中的文件发生改动,你继续读取克隆仓库中的配置文件时无疑只能读到过时的信息,要想和S保持一致,只需要在克隆仓库目录下执行git pull,不过每次执行都需要输入A的密码,比较麻烦。

通过配置主机B免密登录主机A,可以避免在克隆仓库目录下执行git pull需要输入密码的情况,具体步骤是这样的:

  • 首先,在B的~/.ssh目录下找到id_rsa.pub文件,复制文件中内容
  • 然后,在A的~/.ssh目录下找到authorized_keys文件,将复制的内容添加到authorized_keys文件中
  • 如此一来,就可以在克隆仓库目录下免密执行git pull

如果B的~/.ssh目录下没有id_rsa.pub文件,可以尝试使用命令ssh-keygen -t rsa自行生成密钥对


2023.3.30更新 定时执行git pull

虽然可以免密执行git pull了,但是毕竟需要手动执行,有时难免会忘记,不如写一个定时任务,定时自动执行git pull

具体可以这样操作:在主机B的/etc/crontab文件中末尾添加下面一行

0 0 * * * cd /path/to/repositoryS && git pull

这条命令表示在每天0时0分,先将工作目录定位到仓库目录,然后执行git pull

上面这条命令的前5个参数是5个时间字段,这5个时间字段的含义分别是:

  • 第一个字段是分钟(0-59)
  • 第二个字段是小时(0-23)
  • 第三个字段是日(1-31)
  • 第四个字段是月(1-12)
  • 第五个字段是星期(0-7,其中0和7都表示星期日)

参考资料:

posted @ 2022-12-29 17:09  realzhangsan  阅读(530)  评论(0编辑  收藏  举报