有几种方法可以在 git merge 时忽略特定文件的合并:
方法一:使用 .gitattributes 文件(推荐)
在项目根目录创建或编辑 .gitattributes 文件:
infostation.js merge=ours *.js merge=ours # 如果需要忽略所有 js 文件的合并
然后设置合并策略:
# 设置合并驱动
git config merge.ours.driver true
# 或者设置全局
git config --global merge.ours.driver true
这样在合并时,指定的文件会保持当前分支的版本。
方法二:手动合并并排除文件
步骤 1:合并但不提交
# 执行合并但不自动提交
git merge --no-commit --no-ff 目标分支
步骤 2:恢复不想合并的文件
# 恢复 infostation.js 到当前分支的版本
git checkout HEAD -- infostation.js
# 或者恢复到指定分支的版本
# git checkout 源分支 -- infostation.js
步骤 3:提交合并
git commit -m "合并分支,排除 infostation.js"
方法三:使用合并后重置
# 1. 正常合并
git merge 目标分支
# 2. 恢复特定文件
git checkout HEAD~1 -- infostation.js
# 3. 提交恢复
git add infostation.js
git commit --amend # 修改最后一次提交
方法四:使用 git merge + git checkout 组合
# 1. 先保存当前文件的版本
git show HEAD:infostation.js > infostation.js.tmp
# 2. 执行合并
git merge 目标分支
# 3. 恢复之前的版本
cat infostation.js.tmp > infostation.js
git add infostation.js
git commit -m "合并分支,保留原始 infostation.js"
# 4. 清理临时文件
rm infostation.js.tmp

