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

如何在git pull时仅暂存冲突文件?

只暂存Git Pull时会冲突的文件的方案

直接用单一git stash命令没法精准只暂存冲突文件,但可以通过一系列命令实现这个需求,步骤如下:

  • 先拉取远程最新代码但不合并(避免直接pull触发冲突):
    git fetch origin

  • 找出本地已修改且远程也修改了的文件(这些就是pull时会冲突的目标文件):

    # 生成本地修改文件列表
    LOCAL_CHANGES=$(git diff --name-only)
    # 生成远程分支(替换成你的实际分支名,比如main/master)与本地分支的差异文件列表
    REMOTE_CHANGES=$(git diff --name-only HEAD origin/main)
    # 取两者交集,得到可能冲突的文件
    CONFLICT_FILES=$(comm -12 <(echo "$LOCAL_CHANGES" | sort) <(echo "$REMOTE_CHANGES" | sort))
    
  • 仅暂存这些冲突文件:

    if [ -n "$CONFLICT_FILES" ]; then
      git stash push -- $CONFLICT_FILES
    fi
    
  • 现在可以安全拉取远程变更,因为冲突文件已经被暂存,剩下的本地修改和远程无冲突:
    git pull origin main

  • 最后恢复暂存的冲突文件,手动处理冲突即可:
    git stash pop

补充说明

  • 替换命令里的origin/main为你实际对应的远程分支名,比如origin/develop
  • 如果没有冲突文件,CONFLICT_FILES会是空值,stash命令不会执行,直接pull即可
  • 这个方案的核心是先通过diff找出本地和远程都修改过的文件,只暂存这些文件,保留其他无冲突的本地修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:54:59