git小技巧--如何从其他分支merge个别文件或文件夹
2023-09-14 08:56:56 时间
在实际工作中,一个大型的项目或版本迭代可能不是一次上线,可能会分好几次上线,这时候就会涉及创建多个分支,进行分别开发。
创建分支
功能分为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 <file>..." 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_temp Switched to a new branch 'A_temp'
2.将B分支合并到A_temp分支
$ git merge B Updating 1f73596..04627b5 Fast-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 A Switched 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 <file>..." to unstage) # # new file: message.css # new file: message.html # new file: message.js # modified: other.js #
相关文章
- git获取一个版本相对于另一个版本新增,修改,删除的文件
- 如何高效实现文件传输:小文件采用零拷贝、大文件采用异步io+直接io
- [Git] git merge之squash
- git如何恢复已删除存储库中的文件
- 百科知识 DCR文件如何打开
- 关于在eclipse开发环境上打开手机data文件
- 写一个文件备份脚本
- Git fetch和git pull的区别
- Git忽略文件
- git include只包含某些文件
- vscode编辑器自动生成.vue文件
- 删除git中无用的大文件
- AndroidManifest.xml文件详解(activity)(四)
- [Practical Git] Configure global settings with git config
- [Practical Git] Format commit history with git log arguments
- 【RF库XML测试】测试的XML文件说明
- git add 不必要的文件 如何撤回
- 【学习总结】Git学习-GIT工作流-千峰教育(来自B站)
- 如何设置不让editplus生成bak文件
- ubuntu拷贝源码文件到window系统中
- git 不小心把某个文件给 add 了 的解决方法
- 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深 | GPU 过渡绘制调试工具 | 背景过度绘制 )
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息
- JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件
- Win10 无法加载操作系统,因为无法验证文件或某个xx数字签名 蓝屏错误代码0xc0000428
- Git 删除 GitHub仓库的文件——详细操作 githua如何删除文件
- 软件测试行业前景怎么样,一篇文件见分晓
- git如何忽略文件或者文件夹
- Git过滤文件和文夹
- 〖Python自动化办公篇①〗- 文件自动化管理引言及shutil模块实现文件与文件内容的复制
- GIT ---- 常用 Git 命令清单
- git 查看已经放到本地仓库的文件