递归调用git checkout --theirs 批量处理git合并后的冲突

git checkout --theirs /path/*   只对当前目录有效,无法递归处理子目录文件,需要自己写脚本实现该功能。以下bat脚本实现从路径A开始递归遍历所有文件及子目录,并对指定扩展名的文件生成路径B,并将路径B作为参数传递给 git checkout --theirs 命令脚本:

@echo off
setlocal

set "path_a=%~1"
set "file_extension=%~2"

if "%path_a%"=="" (
    echo Usage: %~nx0 path_a file_extension
    exit /b
)

if not exist "%path_a%" (
    echo Invalid path_a: %path_a%
    exit /b
)

if "%file_extension%"=="" (
    echo File extension not specified.
    exit /b
)

echo Starting search in %path_a%...

for /r "%path_a%" %%F in (*.%file_extension%) do (
    set "path_b=%%~dpF%path_a%"
    ::echo Processing file: %%F
    call :git_checkout "%%F" ::"!path_b!"
)

echo Completed.
goto :eof

:git_checkout
echo Processing file: "%~1"
git checkout --theirs "%~1"
goto :eof

:end
endlocal

你可以将上述代码保存为批处理脚本文件(例如 git_checkout.bat),然后在命令行中运行它,指定路径A和文件扩展名作为参数。例如,要从 C:\Project 目录开始遍历所有 .txt 文件,并将路径B拼接为 C:\Project\,可以运行以下命令:

git_checkout.bat C:\Project txt

请注意,此脚本仅适用于Windows操作系统,并假设你已经正确配置了Git并在命令行中可用。确保在运行脚本之前,你已经在正确的Git仓库目录中,并且可以使用 git checkout --theirs 命令。

你可能感兴趣的:(git)