git合并分支时禁止合并特定文件

这篇具有很好参考价值的文章主要介绍了git合并分支时禁止合并特定文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开发过程中经常会遇到这样的场景,一个项目可能有develop(开发环境)、release(生产环境)等多个分支,经常需要对分支进行合并,但是不同分支下的一些配置文件可能会有所不同,比如数据库配置、redis配置等等。但是我们又不想每次打不同的包时都把这些文件改一遍,这时候怎么样才能偷个懒呢?Git正好提供了这样的功能。

将develop分支的代码合并到release分支,并忽略特定的文件
操作步骤如下:
1. 定义一个虚拟的合并策略,叫做 ours:

在根目录下运行命令行

git config --global merge.ours.driver true

如下图所示:

2. 在develop分支的项目根目录下新建文件.gitattributes,在文件中写入需要忽略的文件名 + merge=ours, 一个文件占一行。

例如,忽略service.properties、redis.properties、jdbc.properties 文件:

/yjxy-common-web/src/main/resources/service.properties merge=ours
/yjxy-common-web/src/main/resources/redis.properties merge=ours
/yjxy-web-admin/src/main/resources/jdbc.properties merge=ours

如下图所示:

3. 将.gitattributes文件拷贝到 release分支的项目根目录。

4. 切换回release分支

git checkout release

5. 合并分支

git merge --no-ff -m 'merge' develop

合并之后, release分支的配置文件保持了原样。

影响.gitattributes忽略规则的因素
有的文章中提到,在配置了.gitattributes文件的情况下,仍然存在一个问题:要忽略的文件在不同分支间先修改的不会合并到后修改的文件里,但是后修改的文件可以和先修改的文件进行正常合并。也就是说不同分支中,旧文件不会合并到新文件中,但新文件仍然会合并到旧文件,那么真的是这样吗?在测试过程中发现这个问题有时会出现,有时又不会出现,因此推断是有更细节的触发机制。

经过实验,得到如下结果

前置条件:假设有release、dev两个分支,两个分支的根目录下有同样的.gitattributes文件

结论1:只有在提交更改相同文件时才会触发自定义的忽略规则。

首先,这一点是确定无疑的。

结论2:如果有且仅有一个分支中的文件有修改,此时将这个分支合并到另一个分支,那么自定义忽略规则不会触发,文件仍然会成功合并。

也就是说,仅有一个分支修改过的情况下,要将这个修改过的分支合并到另一个分支的时候,是不适用忽略规则的,文件还是会被合并。

结论3:如果两个分支的文件都有变化(文件变化之后没有进行过合并),那么在进行分支合并时,自定义忽略规则会触发,设置为忽略的文件不会合并,这里不受两个分支文件修改时间先后顺序的影响。

这里是需要强调的一点,如果两个分支的文件都有变化,是会触发忽略规则的,文件不会被合并。不论两个分支中文件的修改时间先后顺序是怎样的,忽略规则都会被触发。当然,这里还有个前提,就是两个分支的文件修改之后,没有进行过合并,如果进行了合并,再次合并时,分支已经变了。文章来源地址https://www.toymoban.com/news/detail-496026.html

到了这里,关于git合并分支时禁止合并特定文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git开发分支开发,合并到主分支

    点我查看文章来源 1.切换到开发分支 在开发分支develop开发,并推到远程仓库 切换到主分支进行合并 切回主分支 合并开发分支到主分支 再push一下 在开发分区提交 切换到主分区 在主分区执行合并操作(如果主分区的代码不是最新,可以先pull拉一下) 注意 merge是要把那个分

    2024年02月15日
    浏览(53)
  • git合并分支文件

    首先创建一个仓库: 至此可以看见初始化之后的环境如下: 在分支user1下,对README.md进行修改。 然后将README.m进行提交。 在分支master下,对README.md进行修改。 然后将README.m进行提交。 进行merge合并,并修改冲突文件 正常提交 必须在进行commit提交之后才能够进行合并,且可能

    2023年04月08日
    浏览(41)
  • Idea Git 分支合并全部文件或指定文件

    这里有两个分支,一个 master 主分支,一个 hy-master 分支 1、先回到 master 分支 2、在当前工作目录的分支为 master 的基础上,点击 hy-master 分支 点击 Merge into Current,就会将 hy-master 分支的内容合并到当前 master 分支 注意:合并成功之后,就会将合并后的代码提交到你的 master 本

    2024年02月16日
    浏览(53)
  • Git将单个文件合并到指定分支

    要将单个文件合并到指定分支,你可以按照以下步骤操作: 确保你在要合并文件的源分支上进行操作。如果不在源分支上,请先切换到源分支: 使用以下命令将单个文件的更改提交到源分支: 切换到目标分支: 4. 使用以下命令将源分支的单个文件合并到目标分支: 这将从

    2024年02月16日
    浏览(50)
  • Git将某个文件合并到指定分支

    企业开发中,经常会单独拉分支去做自己的需求开发,但是某些时候一些公共的配置我们需要从主线 pull ,这时候整个分支 merge 显然不合适 查看分支 git branch git stash 把当前进度(工作区和暂存区)保存起来 git stash pop 来恢复之前的进度继续开发新功能 本文由博客一文多发平

    2024年01月18日
    浏览(60)
  • Git-开发分支(develop)合并到主分支(master)

    确保您正在 master 分支中,可以使用以下命令切换到 master 分支: 使用以下命令从 develop 分支中获取最新的更改: 这将把 develop 分支中的更改合并到当前的 master 分支中。 如果合并过程中出现冲突,需要手动解决这些冲突。 反之,如果没有冲突则直接到步骤5即可 。Git 会在合

    2024年02月05日
    浏览(42)
  • git从其他分支merge个别文件,部分合并文件

    简介 git 使用的过程中,有时候我们可能会有这样的需求, 别的分支上有部分文件是我们当前分支需要的,但是如果使用常规的merge,就会将别的分支的内容全部合并过来,这不是我们想要的,下面简单介绍一个小技巧可以实现只合并指定的文件。 场景一 目前有master 和 dev

    2024年02月07日
    浏览(57)
  • Git将单个文件合并到指定分支教程。

    要将单个文件合并到指定分支,你可以按照以下步骤进行操作: 确保你当前位于要合并文件的源分支上。可以使用  git branch 命令查看当前分支,并使用  git checkout 命令切换到源分支。 使用  git checkout 命令切换到目标分支,即你想要合并文件的分支。 使用  git checkout 命令

    2024年02月03日
    浏览(52)
  • 【Git】在idea中多分支开发如何——合并分支、处理冲突

    博主简介: 22级计算机科学与技术本科生一枚🌸 博主主页:是瑶瑶子啦 每日一言🌼: “人间总有一两风,填我十万八千梦” 我当前开发的分支—— hfy 我想将 subject 分支的最新代码拉取合并到 hfy 分支 点击之后会出现界面,有需要你处理的冲突( 冲突的处理的本质就是:你

    2024年04月17日
    浏览(81)
  • 【团队协作开发】IDEA中Git新建自己的dev工作分支,合并到master主分支教程(极其简单,新手)

    一、创建新dev工作分支 创建完新dev分支以后将默认切换到新dev分支上 二、push到自己的远程dev工作分支 流程和master上push内容一样,也是先add暂存,然后commit,push 三、工作分支合并到master主分支 确保在自己分支上是对的,然后再合并到主分支中 1、先切换到master主分支 2、将

    2024年02月10日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包