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都表示星期日)
参考资料:
- git - 简明指南 https://www.runoob.com/manual/git-guide/