A 更新并提交本地文件及同步远程仓库脚本

A 本地提交文件.bat
--该脚本用于将本地修改的文件提交到本地 Git 仓库,确保所有更改记录在版本控制中。它帮助开发者快速执行 git add 和 git commit 命令,以便更高效地管理代码更新。
A 更新并拉取仓库.bat
--该脚本用于从远程仓库拉取最新的代码更新,并自动合并到本地分支。它通过执行 git pull 命令,确保本地代码库与远程仓库保持同步,减少代码冲突。
This commit is contained in:
SpecialX 2024-12-17 16:18:15 +08:00
parent 3b5bc70561
commit ef8438da42
2 changed files with 164 additions and 0 deletions

82
更新并拉取仓库.bat Normal file
View File

@ -0,0 +1,82 @@
@echo off
REM 1. 验证当前分支是否为 Dev 分支
echo 正在检查当前分支...
for /f "tokens=*" %%i in ('git rev-parse --abbrev-ref HEAD') do set branch=%%i
echo 当前分支: %branch%
if "%branch%" neq "Dev" (
echo 错误: 当前分支不是 'Dev'。请先切换到 'Dev' 分支。
pause
exit /b 1
)
REM 2. 检查是否有未提交的更改
echo 正在检查是否有未提交的更改...
git diff --quiet
if %errorlevel% neq 0 (
echo 错误: 你有未提交的修改,请先提交或暂存更改。
pause
exit /b 1
)
REM 3. 检查暂存区是否有未提交的更改
echo 正在检查是否有暂存的更改...
git diff --cached --quiet
if %errorlevel% neq 0 (
echo 错误: 你有暂存的更改,请先提交或取消暂存。
pause
exit /b 1
)
REM 4. 检查是否有未跟踪的文件
echo 正在检查是否有未跟踪的文件...
git ls-files --others --exclude-standard
if %errorlevel% == 0 (
echo 错误: 你有未跟踪的文件,请先将文件添加或忽略它们。
pause
exit /b 1
)
REM 5. 拉取远程更新并默认使用远端的文件进行合并
echo 正在从 origin/Dev 拉取更新...
git fetch origin Dev
if %errorlevel% neq 0 (
echo 错误: 无法从 origin/Dev 拉取更新。
pause
exit /b 1
)
echo 正在使用 'theirs' 策略进行合并...
git merge --strategy=recursive --strategy-option=theirs
if %errorlevel% neq 0 (
echo 错误: 合并失败,请解决冲突或检查仓库。
pause
exit /b 1
)
REM 6. 确保 LFS 文件完整
echo 正在拉取 LFS 文件...
git lfs pull
if %errorlevel% neq 0 (
echo 错误: Git LFS 拉取失败,请检查 LFS 配置。
pause
exit /b 1
)
REM 7. 检查仓库完整性
echo 正在检查仓库完整性...
git fsck --full
if %errorlevel% neq 0 (
echo 错误: Git fsck 检测到仓库存在问题,请调查。
pause
exit /b 1
)
REM 8. 暂停执行
echo 所有步骤完成,执行成功。
pause
我希望在第REM4阶段
echo 错误: 你有未跟踪的文件,请先将文件添加或忽略它们。
这里给出选择,是否使用 提交文件.bat
确认的话就是打开当前目录下的该bat文件

82
本地提交文件.bat Normal file
View File

@ -0,0 +1,82 @@
@echo off
REM 1. 获取所有未跟踪或者修改的文件
echo 正在获取未跟踪或修改的文件...
setlocal enabledelayedexpansion
REM 清空变量
set "modified_files="
set "untracked_files="
REM 收集修改的文件
for /f "tokens=*" %%i in ('git ls-files --modified') do (
echo 修改的文件: %%i
set "modified_files=!modified_files! %%i"
)
REM 收集未跟踪的文件
for /f "tokens=*" %%i in ('git ls-files --others --exclude-standard') do (
echo 未跟踪的文件: %%i
set "untracked_files=!untracked_files! %%i"
)
REM 2. 获取当前 Git 用户名
for /f "tokens=*" %%u in ('git config user.name') do set "username=%%u"
echo 当前 Git 用户名是: %username%
REM 3. 创建两个列表来存储文件
set "invalid_files="
set "valid_files="
REM 4. 检查文件路径是否符合要求
echo 正在检查文件路径...
for %%f in (!modified_files! !untracked_files!) do (
echo %%f | findstr /i "Content/PrivateCommonLiberal/%username%" >nul
if errorlevel 1 (
echo 文件未通过检查: %%f
set "invalid_files=!invalid_files! %%f"
) else (
echo 文件通过检查: %%f
set "valid_files=!valid_files! %%f"
)
)
REM 5. 检查未通过文件列表
if not "!invalid_files!"=="" (
echo 推送失败:以下文件不符合要求,请检查:
for %%f in (!invalid_files!) do echo %%f
echo.
set /p "confirm=是否忽略这些文件并继续提交?(y/n): "
if /i "!confirm!"=="y" (
echo 正在丢弃未通过的文件更改...
for %%f in (!invalid_files!) do (
git reset "%%f" >nul 2>&1
git checkout -- "%%f" >nul 2>&1
git clean -f "%%f" >nul 2>&1
)
) else (
echo 操作已取消。
pause
exit /b 1
)
)
REM 6. 输入提交信息
echo 所有文件符合要求,准备提交...
set /p "title=请输入提交标题:"
set /p "details=请输入提交细节:"
REM 7. 提交通过检查的文件
for %%f in (!valid_files!) do (
git add "%%f"
)
git commit -m "%title%" -m "%details%"
if %errorlevel% neq 0 (
echo 错误: 提交失败,请检查是否有更改。
pause
exit /b 1
)
echo 提交成功!
pause