You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git合并本地与远程提交:按日期优先且保留所有提交记录

按提交日期优先自动合并Git分支的方案

前置操作:拉取远程最新状态

先同步远程仓库的最新提交,但不自动合并到本地分支:

git fetch origin main

对比本地与远程的提交时间

执行以下命令查看两端最新提交的日期,判断哪一方更新:

# 查看本地main分支最新提交时间
git log -1 --format="本地最新提交: %ci %h" HEAD
# 查看远程origin/main分支最新提交时间
git log -1 --format="远程最新提交: %ci %h" origin/main

根据提交时间选择合并策略

场景1:本地提交比远程新

要保留本地最新的修改内容,同时将远程提交纳入历史记录,执行:

git merge origin/main --strategy-option ours

该命令会生成一个新的合并提交,所有本地和远程的提交都会被保留,最终文件内容以本地版本为准。

场景2:远程提交比本地新

要保留远程最新的修改内容,同时保留本地提交历史,执行:

git merge origin/main --strategy-option theirs

同样会生成合并提交,完整保留所有提交记录,最终文件内容以远程版本为准。

推送合并结果到远程

合并完成后,将本地分支推送到远程仓库:

git push origin main

可选:自动判断脚本

如果不想手动对比时间,可使用以下Shell脚本自动完成判断与合并:

#!/bin/bash

# 将提交时间转为Unix时间戳(便于数值比较)
LOCAL_TIMESTAMP=$(git log -1 --format=%ct HEAD)
REMOTE_TIMESTAMP=$(git log -1 --format=%ct origin/main)

if [ "$LOCAL_TIMESTAMP" -gt "$REMOTE_TIMESTAMP" ]; then
    echo "本地提交更新,执行ours策略合并"
    git merge origin/main --strategy-option ours
else
    echo "远程提交更新,执行theirs策略合并"
    git merge origin/main --strategy-option theirs
fi

# 推送结果
git push origin main

保存为auto-merge-date.sh,赋予执行权限后即可一键运行:

chmod +x auto-merge-date.sh
./auto-merge-date.sh

内容的提问来源于stack exchange,提问作者Bialy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:55:59