本地文件自动提交到仓库

发布于:2025-06-28 ⋅ 阅读:(12) ⋅ 点赞:(0)

背景 将本地目录做一个存储仓库,将归档的文件放入其中。自动同步到远程仓库。

仓库配置 省略

配置密钥 用户可以 git pull \ git push \ git commit

自动 拉取、更新 脚本

文件名:autosave.sh


#!/bin/zsh

# 设置变量
LOCAL_DIR=$1

# 进入工作目录
cd "$LOCAL_DIR" || { echo "无法进入目录 $LOCAL_DIR"; exit 1; }

# 拉取代码
pvsh() { git rev-parse --abbrev-ref HEAD | xargs -I {} git push origin '{}'; };
# 推送代码
pvll() { git rev-parse --abbrev-ref HEAD | xargs -I {} git pull origin '{}'; };
# 强制拉取代码
pxsh() { git rev-parse --abbrev-ref HEAD | xargs -I {} git push origin --force '{}'; };
# 强制推送代码
pxll() { git rev-parse --abbrev-ref HEAD | xargs -I {} git pull origin --force '{}'; };

commit() { git log -1 --pretty=format:'%B' | git commit -a -F -;  };


if [ "$(git status --short | awk '{print $2}' | wc -l)" -gt 0 ]; then
    ## 当前目录下有新的文件 或者 有文件更新
    git add .
    commit;
    pvll;
    if [ $? -ne 0 ] ; then
        ## mac OS 系统中调用一个弹窗 弹出脚本异常,用户需要主动修改
        osascript -e 'tell application "System Events" to display dialog "脚本异常!" buttons {"确定"} default button 1'
    fi
    pvsh;
    if [ $? -ne 0 ] ; then
        ## mac OS 系统中调用一个弹窗 弹出脚本异常,用户需要主动修改
        osascript -e 'tell application "System Events" to display dialog "脚本异常!" buttons {"确定"} default button 1'
    fi
else
    ## 当前目录没有更新则直接拉取
    pvll;
fi

定时任务

文件名:com.rc.autosave.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.rc.autosave</string>

    <key>ProgramArguments</key>
    <array>
        <string>/bin/zsh</string>
        <string>/Users/rc/Code/markdown/autosave.sh</string>
        <string>/Users/rc/Code/markdown/</string>
    </array>

    <key>StartInterval</key>
    <integer>300</integer> <!-- 五分钟执行一次 -->

    <key>RunAtLoad</key>
    <true/> <!-- 开机启动 -->

    <key>StandardOutPath</key>
    <string>/tmp/autosave.log</string>

    <key>StandardErrorPath</key>
    <string>/tmp/autosave_error.log</string>
</dict>
</plist>

Mac os 配置任务

launchctl load ./com.rc.autosave.plist # 载入配置文件

launchctl list | grep autosave # 查看自动化配置

Linux 配置任务

  • crontab -e
  • */5 * * * * /Users/rc/Code/markdown/autosave.sh

原文档地址: Issues/51


网站公告

今日签到

点亮在社区的每一天
去签到