小脚本:文件保存后,自动上传到git

闲来无事写写小脚本


假设已经有一个脚本

复制代码
@echo off

:START
:: 获取当前脚本的路径
cd /d %~dp0

:: 清空提交注释变量的值
set commit_msg=

:: 提示用户输入提交注释
set /p commit_msg=请输入提交注释(输入 n 退出):

:: 如果用户输入内容为 n,则退出脚本
if /i "%commit_msg%"=="n" (
    exit
)

:: 如果用户没有输入内容,则使用默认的提交注释
if "%commit_msg%"=="" (
    set "commit_msg=自动推送: %date:~0,10%,%time:~0,8%"
)

:: 自动提交
git init 
git add . 
git commit -m "%commit_msg%" 
git push origin master
@echo 已经完成,

:: 回到第一步,让用户输入
goto START

用来做git自动推送的。现在我们希望稍微修改这个脚本,满足以下功能:

  1. 获取该bat脚本所在文件夹下的所有文件,以及所有子文件夹的所有文件的修改时间,取最新时间,记为last_mod_time.

  2. 每隔1秒,重新获取修改时间,记为mod_time

  3. 判断,如果mod_time>last_mod_time,这表示文件在最近出现了修改;于是,触发上面自动提交的脚本(此时直接提交即可,无需用户输入任何内容)

  4. 完成之后,将last_mod_time修改为mod_time
    用windows下的bat文件来写:

    @echo on
    setlocal enabledelayedexpansion

    :: 获取当前脚本的路径
    cd /d %~dp0

    :: 初始化Git仓库(如果还没有初始化)
    git init

    :MONITOR
    :: 强行添加所有文件到暂存区
    git add .

    :: 尝试提交更改,使用当前日期和时间作为提交信息,并将输出重定向到变量
    set "commit_msg=自动推送: %date% %time%"
    git commit -m "%commit_msg%" 2>&1 | find "nothing to commit, working tree clean" >nul

    if errorlevel 1 (
    :: 如果有提交内容
    echo 有更改提交,推送到远程仓库...
    git push
    echo 已经完成
    ) else (
    :: 如果没有提交内容
    echo 没有检测到更改,休息1秒后继续监控...
    )

    :: 等待1秒
    timeout /t 1 >nul

    :: 继续监控
    goto MONITOR

自动git pull

复制代码
@echo on

:: 获取当前脚本的路径
cd /d %~dp0

:MONITOR
:: 从远程仓库拉取最新代码
git pull

:: 等待1秒
timeout /t 1 >nul

:: 继续监控
goto MONITOR
相关推荐
Python私教2 小时前
AI 并行编码的 Worktree 生命周期:创建、隔离与安全回收
人工智能·git
互联网中的一颗神经元2 小时前
16 — 改写历史 rebase:搬家到新楼层,不是合并
git
互联网中的一颗神经元7 小时前
19 — 贮藏与清理:stash 是抽屉,gc 是打包箱
git
用户330144867638 小时前
20 — 远程进阶:强制推送的保险绳——force-with-lease
git
Cooper258 小时前
别急着改 Git 历史:rebase、cherry-pick、bisect 与 reflog 的安全操作顺序
git
刚入门的大一新生10 小时前
Linux-版本控制器Git
git
扶苏100210 小时前
同一个 Git 项目整出两份,切分支互不影响?两种方案实测
大数据·git·elasticsearch
ZJU_统一阿萨姆10 小时前
【Git】Github 开源许可证详解
git·开源·github
Geek-Chow1 天前
Git 标签与发布流程:轻量标签、附注标签与签名标签
git·tags
wear工程师1 天前
Git 冲突怎么解决:别只删标记,先看懂暂存区的 1、2、3 阶段
git