当前位置: 首页 > news >正文

Git合并时忽略文件的6种技巧

有几种方法可以在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

方法五:使用 Git Hooks(自动化)

创建.git/hooks/pre-commit.git/hooks/post-merge钩子脚本来自动恢复配置文件。

示例.git/hooks/post-merge

#!/bin/bash # 检查是否在合并中 if [ -f ".git/MERGE_HEAD" ]; then # 恢复配置文件到当前分支的默认值 if [ "$(git rev-parse --abbrev-ref HEAD)" = "develop" ]; then echo '// window.IPConfig = "http://1.95.59.38:8083"' > infostation.js elif [ "$(git rev-parse --abbrev-ref HEAD)" = "test" ]; then echo '// window.IPConfig = "http://1.95.205.197:8083"' > infostation.js fi git add infostation.js fi

设置脚本可执行:

chmod +x .git/hooks/post-merge

方法六:更好的解决方案 - 使用配置文件模板

更专业的方法是不在代码中硬编码配置,而是使用模板:

  1. 创建配置文件模板:

    // infostation.js.template window.IPConfig = "{{IP_CONFIG}}"
  2. 在构建或部署时生成实际配置:

    # 根据环境变量生成配置文件 sed "s/{{IP_CONFIG}}/$IP_CONFIG/" infostation.js.template > infostation.js
  3. 将模板加入版本控制,忽略实际配置文件:.gitignore

    infostation.js # 忽略实际配置文件 !infostation.js.template # 跟踪模板

快速别名方法

创建 Git 别名简化操作:

# 创建合并并排除特定文件的别名 git config --global alias.merge-exclude '!f() { git merge --no-commit --no-ff "$1" && git checkout HEAD -- infostation.js && git commit -m "合并 $1,排除配置文件"; }; f' # 使用别名 git merge-exclude 目标分支

针对你的具体情况

如果你的环境配置是:

  • 开发分支:使用开发服务器

  • 测试分支:使用测试服务器

建议使用.gitattributes方法(方法一),这样每个分支都能保持自己的配置,合并时不会相互覆盖。

.gitattributes文件示例:

# 合并时保留当前分支的版本 infostation.js merge=ours config/*.js merge=ours # 如果有更多配置文件

注意:.gitattributes文件需要提交到仓库,这样所有开发者都会使用相同的合并策略。

http://www.jsqmd.com/news/211917/

相关文章:

  • 在 Ubuntu 下载 Typora
  • RK3588+kylin V10安装docker
  • python---正则表达式
  • ATL80.dll文件丢失找不到 打不开问题 免费下载方法分享
  • 最新爆火6款免费AI论文神器!PaperTan一站式搞定选题降重
  • Linux 命令行实战训练营(
  • 超强在线图片处理器:支持各种格式转换GIF/AVIF/HEIF
  • VisionPro二开之九点标定
  • Design Fluid Viscous Dampers in SAP2000 and Peform3D
  • 2026新测!这几款款亲测有效的降ai率工具推荐,含手把手教你论文降ai,查重率从红变绿只需几分钟!
  • VisionPro之九点标定
  • 全网最全ai降ai方法:亲测能有效降低ai痕迹,论文降aigc从此不求人,导师看了都说好!
  • 程序媛失业第七天
  • 基于Python+Django的社区服务管理系统设计与实现
  • CES 2026最酷笔记本电脑:可拆卸设计成为新趋势
  • 终极降AI指南!这款能让你相见恨晚的论文降aigc神器,实测降ai效果立竿见影
  • 【AI】各类型开源模型排行
  • 论文jiangAI干货!4款aigc免费降重工具,亲测降低ai率的同时保留原意,让你的文章更有“人味”
  • 吐血推荐9个AI论文网站,专科生毕业论文轻松搞定!
  • 还在为AI率爆表发愁吗?这几款降ai率工具推荐,实测免费降低ai率只需三步,建议反复观看!
  • 30岁大厂java程序媛被裁第2个月零10天
  • VisionPro之Blob模块
  • 【记录】LLM|魔搭社区加载本地模型Qwen-Image-Layered(附可运行的代码)
  • CentOS系统安装Python3.12.10
  • 0-073-0030-0可编程控制器
  • 亲测好用自考必看TOP10AI论文工具
  • AI框架之Spring AI与Spring Cloud Alibaba AI使用讲解
  • AFP87432输入/输出端子板
  • 机器人开发的“ChatGPT时刻”已到 老黄定调“物理AI”的路线图
  • 3BSE022366R1通信接口模块