GIT 如何从另一分支合并特定的文件
2015-08-04 16:18
399 查看
是否遇到过这种情景:
您在一个分支上工作,发现该分支上的某些文件实现的功能已经在其他分支上实现了
但因为这两个分支实现不同的功能,因此不能进行简单的合并工作,但您又不想重复其他已经完成的工作
以下操作可以解决该问题:
处理流程这样的:
先检验当前分支与要合并分支通用文件的差异(要合并的分支必须要全部commit)
拉出要“合并某分支文件有差异”的所有文件(会覆盖当前分支的文件,在提交前请手动合并差异文件) git checkout 分支名称 多个指定的文件名
添加并commit到当前分支 git commit -a -m '注释 合并其他分支的某些文件 和合并分支提交时的说明信息'
使用"checkout 文件"合并其他分支的文件会覆盖当前分支的文件,所以在提交之前必须手动合并差异
参考:
高富帅们的Git技巧-从另一分支获取文件内容而不用切换分支
How to "Merge" Specific Files from Another Branch
get a file from a specific revision
git如何查看某一个文件的详细提交记录
git查看某个文件的修改历史
Git学习教程(七) Git差异比对
来自为知笔记(Wiz)
您在一个分支上工作,发现该分支上的某些文件实现的功能已经在其他分支上实现了
但因为这两个分支实现不同的功能,因此不能进行简单的合并工作,但您又不想重复其他已经完成的工作
以下操作可以解决该问题:
处理流程这样的:
先检验当前分支与要合并分支通用文件的差异(要合并的分支必须要全部commit)
拉出要“合并某分支文件有差异”的所有文件(会覆盖当前分支的文件,在提交前请手动合并差异文件) git checkout 分支名称 多个指定的文件名
添加并commit到当前分支 git commit -a -m '注释 合并其他分支的某些文件 和合并分支提交时的说明信息'
F:\Test>git init #初始化 Initialized empty Git repository in F:/Test/.git/ F:\Test>git add . #添加文件 F:\Test>git commit -m 'init' #提交 [master (root-commit) 0b9520a] 'init' 2 files changed, 4 insertions(+) create mode 100644 dev.txt create mode 100644 test.txt F:\Test>git checkout -b dev --新建并切换分支 Switched to a new branch 'dev' F:\Test>git diff #更改文件,比较文件差异 WARNING: terminal is not fully functional diff --git a/dev.txt b/dev.txt index d62bb90..a21f2e9 100644 --- a/dev.txt +++ b/dev.txt @@ -1,2 +1,5 @@ init -dev-edit \ No newline at end of file +dev-edit + + +dev-edit-2015-08-05 \ No newline at end of file F:\Test>git commit -a -m 'edit-dev' #提交 [dev 9f224fd] 'edit-dev' 1 file changed, 4 insertions(+), 1 deletion(-) F:\Test>git checkout master #切换到主分支 Switched to branch 'master' F:\Test>git diff #更改文件,并对比差异 WARNING: terminal is not fully functional diff --git a/dev.txt b/dev.txt index d62bb90..719fd72 100644 --- a/dev.txt +++ b/dev.txt @@ -1,2 +1,4 @@ init -dev-edit \ No newline at end of file +dev-edit + +edt-master-2018-08-05 \ No newline at end of file F:\Test>git commit -a -m 'edit-master-dev' #提交并保存已更改的文件 [master dbeec1c] 'edit-master-dev' 1 file changed, 3 insertions(+), 1 deletion(-) F:\Test>git status On branch master nothing to commit, working directory clean F:\Test>git checkout dev dev.txt #在master中合并 并覆盖dev分支中的dev.txt文件 F:\Test>git status #当前master分支状态,因为dev.txt是直接从dev分支直接覆盖而来,所以可能需要手动合并冲突 On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: dev.txt F:\Test>git diff WARNING: terminal is not fully functional - (press RETURN) F:\Test> F:\Test>git diff dev.txt #查看dev.txt跟当前分支的差异,因为已经提交到暂存区,所以这里没有显示出差异 WARNING: terminal is not fully functional - (press RETURN) F:\Test>git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: dev.txt F:\Test>git citool #使用Gui查看差异
使用"checkout 文件"合并其他分支的文件会覆盖当前分支的文件,所以在提交之前必须手动合并差异
参考:
高富帅们的Git技巧-从另一分支获取文件内容而不用切换分支
How to "Merge" Specific Files from Another Branch
get a file from a specific revision
git如何查看某一个文件的详细提交记录
git查看某个文件的修改历史
Git学习教程(七) Git差异比对
来自为知笔记(Wiz)
相关文章推荐
- Copying Books
- 导航栏
- [AIR] AIR将数据保存并导出为Excel
- 百度地图引入网页中
- Java内部类
- hdu1285 拓扑排序 java实现
- Android自定义圆形头像
- 被我们误读的诗句《静夜思》
- 俞敏洪:与其有钱,不如值钱
- Undefined exploded archive location
- POJ2299 Ultra-QuickSort
- java缓冲流,BufferedReader,BufferedWriter 详解
- mysql命令大全
- jQuery之日期选择器
- Angular开发Tips
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- 算法面试题-- 连接树的所有兄弟节点
- a标签href的值
- TCP UDP 校验算法
- Hive 不同存储格式表数据同步问题