MUD 发表于 2026-3-27 22:31:52

git自动同步助手




前段时间看到某个群里有人说代码损坏又没有备份导致了源码无法找回,突发奇想可以使用git仓库来白嫖代码备份空间,还有版本控制的功能,然后搜了一下相关资料,搜索结果推荐使用git hook,但是无法实时感知文件变化进行备份,然后另辟蹊径使用批处理来达到目的。


原理就是间隔一定时间就检查一遍当前仓库文件的git状态,这个方法不需要繁琐的检测文件变动,还能实时提交代码备份。


修改INTERVAL的值来控制检测时间间隔,单位是秒,检测到状态更改后会自动执行add、commit、push。


注意,如果文件过多变动过快的话建议把间隔时间加大,避免提交失败等情况的出现,如果远程仓库有新提交的话一定要先执行git pull再打开本工具。



@echo off
cd /d %~dp0
chcp 65001 >nul

set INTERVAL=3

echo ========================================
echo Git自动同步助手已启动
echo ========================================

:loop
git status --porcelain 2>nul | findstr "^" >nul

if %errorlevel% equ 0 (
    setlocal enabledelayedexpansion
   
    set d=%date%
    set d=!d:/=!
    set d=!d:-=!
    set d=!d: =!
    set d=!d:周=!
    set d=!d:一=!
    set d=!d:二=!
    set d=!d:三=!
    set d=!d:四=!
    set d=!d:五=!
    set d=!d:六=!
    set d=!d:日=!
   
    set t=%time: =0%
    set t=!t::=!
    set t=!t:.=!
   
    set msg=自动备份_!d!_!t:~0,6!
   
    echo.
    echo ----------------------------------------
    echo [%date% %time%] 发现变动
   
    echo
    git status -s
   
    echo
    git add .
    git commit -m "!msg!"
   
    echo
    git push
   
    if !errorlevel! equ 0 (
      echo [%date% %time%] 同步成功
    ) else (
      echo [%date% %time%] 同步失败
      powershell -Command "Add-Type -AssemblyName PresentationFramework; ::Show('Git Sync Failed', 'GitHelper', 'OK', 'Error')"
    )
   
    echo ----------------------------------------
    endlocal
)

timeout /t %INTERVAL% /nobreak >nul
goto loop




kisl7979 发表于 2026-3-27 23:25:40

稳定不?
页: [1]
查看完整版本: git自动同步助手