博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git小技巧--如何从其他分支merge个别文件或文件夹
阅读量:6594 次
发布时间:2019-06-24

本文共 1808 字,大约阅读时间需要 6 分钟。

在实际工作中,一个大型的项目或版本迭代可能不是一次上线,可能会分好几次上线,这时候就会涉及创建多个分支,进行分别开发。

创建分支

功能分为2个分支,分别为A、B。

A上面有个列表页功能
B上面有个详情页功能,还有个系统消息功能

产品经理说先上列表功能,于是我们就开发A分支,列表功能很快开发完成。

第二天按常理开发B分支,开发到一半,产品经理说目前的系统消息功能需要急着上线,要和列表功能一起上线,当时就懵逼了,然后赶紧放下详情页的开发,立马去开发系统消息功能,开发完之后需要将列表功能和系统消息功能放在一个分支上提测,这时候分支合并就派上用场了。

合并分支

使用git merge 命令进行分支合并是通用的做法,但是git merge 合并的时候会将两个分支的内容完全合并,如果想合并一部分肯定是不行的。那怎么办?

如何从其他分支merge指定文件到当前分支,git checkout 是个合适的工具。

git checkout source_branch <path>...

强制合并

我们使用git checkout 将B分支上的系统消息功能添加到A分支上

$ git branch  * A      B    $ git checkout B message.html message.css message.js other.js$ git status# On branch A# Changes to be committed:#   (use "git reset HEAD 
..." to unstage)## new file: message.css# new file: message.html# new file: message.js# modified: other.js#

合并完成

注意:在使用git checkout某文件到当前分支时,会将当前分支的对应文件强行覆盖

这里新增文件没问题,但是A分支上原有的other.js会被强行覆盖,如果A分支上的other.js有修改,在checkout的时候就会将other.js内容强行覆盖,这样肯定是不行的。如何避免不强制覆盖,往下看。

智能合并

1.使用git checkout 将根据A分支创建一个A_temp分支,避免影响A分支

$ git checkout -b A_tempSwitched to a new branch 'A_temp'

2.将B分支合并到A_temp分支

$ git merge BUpdating 1f73596..04627b5Fast-forward message.css                     | 0 message.html                    | 0 message.js                      | 0 other.js                        | 1 + 4 files changed, 1 insertion(+) create mode 100644 message.css create mode 100644 message.html create mode 100644 message.js

3.切换到A分支,并使用git checkout 将A_temp分支上的系统消息功能相关文件或文件夹覆盖到A分支

$ git checkout ASwitched to branch 'A'$ git checkout A_temp message.html message.css message.js other.js$ git status# On branch A# Changes to be committed:#   (use "git reset HEAD 
..." to unstage)## new file: message.css# new file: message.html# new file: message.js# modified: other.js#

ok,完结,这是工作中使用git合并总结的经验,仅供参考,有错误请指出,谢谢!

转载地址:http://chcio.baihongyu.com/

你可能感兴趣的文章
CocoStudio 1.4.0.1数据编辑器使用
查看>>
关于使用Android NDK编译ffmpeg
查看>>
跟我一起考PMP--项目人力资源管理
查看>>
【虚拟化实战】存储设计之七Block Size
查看>>
烂泥:记一次诡异的网络中断
查看>>
在 SELECT 查询中使用集运算符
查看>>
UITableView 延迟加载图片的例子
查看>>
控制IMG图片的大小缩放
查看>>
Visual C++ 时尚编程百例006(快捷键)
查看>>
ASP.NET MVC3 系列教程 - 如何使项目Debug进MVC3源代码
查看>>
操作步骤:用ildasm/ilasm修改IL代码
查看>>
HTTP POST GET 本质区别详解
查看>>
【java】构建工具,maven,ant,gradlew
查看>>
51驱动1602液晶显示器的程序
查看>>
委托-利用GetInvocationList处理链式委托
查看>>
正则表达式 之 C#后台应用
查看>>
[Android] 深入浅出Android App耗电量统计
查看>>
对称加密与非对称加密
查看>>
docker学习(5) 在mac中创建mysql docker容器
查看>>
【C语言】字符串替换空格:实现一个函数,把字符串里的空格替换成“%20”
查看>>