用git合并分支时,如何保持某些文件不被合并
2015-04-12 12:58
344 查看
使用git作为版本控制工具有半年多了。目前还是在边学边用的阶段,因为git这东西内容实在是太多了,学习路线比较陡峭,而且学习过程当中时不时会冒出一些特别有意思的小tips让你十分的惊喜。因此,朋友们,如果你还没有使用git,那么现在立即使用起来吧,即使你现在对他毫无了解,因为git将会给你的开发带去无穷多的帮助,当然其入门也比较容易的。
最近在使用git时出现了这样一个场景:我们一个产品分两条线,两个小组各自开发各自的模块,最后统一发版。但是呢,由于鄙人负责的模块需求比较多,工期也少,人手嘛,只有鄙人一个(真不是在找借口,虽然另外一个组有三个人。。),因此,在开发上落后于另一组较多。为了保证其他小伙伴顺利进行下个版本迭代,我在master上开了个分支来开发当前版本,他们在master上开发下一版本。等我终于开发完成后呢,面临这样一个问题:其他小伙伴在master上修改了几个重要的文件,对产品来说是个较大的改动,因此我把分支merge回master时必须保持这几个文件不会被合并,否则将面临一大坨令人发指的冲突,并且解决冲突也容易出各种各样的问题。这时候怎么办呢?感谢伟大的互联网,让我找到一个完美的解决方案。原帖地址先贴出来,大家膜拜一下,如果能看懂英文,请直接移步该帖,否则,就听小弟勉强翻译一下吧。。。重在表达思想,本人英文水平也不足以一字一句的翻译出来。
原帖地址:点击打开链接
大意是说,git在merge分支时,有一个默认的merge驱动,这个驱动会去检查每个文件的每一行,如果按照一定规则发现两个分支的同一个文件有不同,那么认为两个分支都对这个文件做了修改,会merge两个文件,此时有可能产生冲突;那么如果我们自定义一个merge驱动,在里面定义一些不会被检查的文件,那git就会直接跳过这些文件,因此就不会merge啦。
步骤大概是这个样子滴:
1:创建我们的自定义merge driver:
2:在要被merge的分支上创建.gitattributes 文件,并且在文件中置顶不merge的文件名:
是不是很简单?嘿嘿,去试一试吧!
最近在使用git时出现了这样一个场景:我们一个产品分两条线,两个小组各自开发各自的模块,最后统一发版。但是呢,由于鄙人负责的模块需求比较多,工期也少,人手嘛,只有鄙人一个(真不是在找借口,虽然另外一个组有三个人。。),因此,在开发上落后于另一组较多。为了保证其他小伙伴顺利进行下个版本迭代,我在master上开了个分支来开发当前版本,他们在master上开发下一版本。等我终于开发完成后呢,面临这样一个问题:其他小伙伴在master上修改了几个重要的文件,对产品来说是个较大的改动,因此我把分支merge回master时必须保持这几个文件不会被合并,否则将面临一大坨令人发指的冲突,并且解决冲突也容易出各种各样的问题。这时候怎么办呢?感谢伟大的互联网,让我找到一个完美的解决方案。原帖地址先贴出来,大家膜拜一下,如果能看懂英文,请直接移步该帖,否则,就听小弟勉强翻译一下吧。。。重在表达思想,本人英文水平也不足以一字一句的翻译出来。
原帖地址:点击打开链接
大意是说,git在merge分支时,有一个默认的merge驱动,这个驱动会去检查每个文件的每一行,如果按照一定规则发现两个分支的同一个文件有不同,那么认为两个分支都对这个文件做了修改,会merge两个文件,此时有可能产生冲突;那么如果我们自定义一个merge驱动,在里面定义一些不会被检查的文件,那git就会直接跳过这些文件,因此就不会merge啦。
步骤大概是这个样子滴:
1:创建我们的自定义merge driver:
git config --global merge.ours.driver true
2:在要被merge的分支上创建.gitattributes 文件,并且在文件中置顶不merge的文件名:
echo 'email.json merge=ours' >> .gitattributes git add .gitattributes git commit -m 'chore: Preserve email.json during merges'3:回到要合并到的分支(注意形容词)执行merge:
(newbranch) $ git checkout master (master) $ git merge newbranch Auto-merging ... Merge made by the 'recursive' strategy. demo-shared | 1 + 1 file changed, 1 insertion(+)经过以上步骤,我们指定的email.json就不会被合并咯
是不是很简单?嘿嘿,去试一试吧!
相关文章推荐
- 用git合并分支时,如何保持某些文件不被合并
- git 下如何把另外一个分支的某个文件改动merge 合并到这个分支,而不是把整个分支merge过来
- GIT 如何从另一分支合并特定的文件
- Git合并指定文件到另一个分支
- Git具体问题:如何安全的push文件到工作分支
- Git 菜鸟变大神 (五) 如何创建以及合并分支
- TFS如何跨分支合并未签入的文件
- Git 分支合并(单文件合并,单commit合并)
- [Git]07 如何在提交过程中忽略某些文件
- Git 菜鸟变大神 (五) 如何创建以及合并分支
- [Git]07 如何在提交过程中忽略某些文件
- git如何合并某次提交命令到分支--git cherry-pick <commit id>
- git小技巧--如何从其他分支merge个别文件或文件夹
- git小技巧--如何从其他分支merge个别文件或文件夹
- Git合并指定文件到另一个分支
- Git 如何通过命令合并远程的两个分支
- 如何在git导出分支之间差异文件的压缩包,类似svn的导出变化文件功能
- Git小技巧:如何从其他分支merge个别文件
- GIT 如何合并另一个远程Git仓库的文件到本地仓库里某个指定子文件夹并不丢失远程提交记录
- 如何在Git中忽略某些文件