是否遇到过这种情景:
您在一个分支上工作,发现该分支上的某些文件实现的功能已经在其他分支上实现了
但因为这两个分支实现不同的功能,因此不能进行简单的合并工作,但您又不想重复其他已经完成的工作
以下操作可以解决该问题:
 
处理流程这样的:
  1. 先检验当前分支与要合并分支通用文件的差异(要合并的分支必须要全部commit)
  2. 拉出要“合并某分支文件有差异”的所有文件(会覆盖当前分支的文件,在提交前请手动合并差异文件) git checkout 分支名称 多个指定的文件名
  3. 添加并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 如何从另一分支合并特定的文件的更多相关文章

  1. git学习笔记06-创建分支合并分支-比svn快多了,因为只有指针在改变

    一开始git只有一条时间线,这个分支叫主分支,即master分支. HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支. 每次提交,mas ...

  2. git的工作流程(分支合并)

    git支持很多种工作流程,我们采用的一般是这样,远程创建一个主分支,本地每人创建功能分支,日常工作流程如下: 去自己的工作分支$ git checkout work 工作.... 提交工作分支的修改$ ...

  3. git的使用理解(分支合并的使用理解,多人编程的解决方案)

    本文主要记录了对git日常使用的一些理解,主要是对git分支的一些感悟. git强大的版本控制系统,之前也使用过SVN,感觉上git对于多人开发的版本控制更加强大,特别是最近对git分支的使用,更是深 ...

  4. Git合并特定commits 到另一个分支

    https://ariejan.net/2010/06/10/cherry-picking-specific-commits-from-another-branch/ http://blog.csdn ...

  5. git总结三、关于分支下——团队合作中最重要的合并分支

    合并分支是团队合作开发中常见的操作,这里涉及到两个命令:git merge 和 git rebase 下面来好好说一下git merge和git rebase都是怎样工作的 一. 1.新建一个空目录并 ...

  6. git分支合并的冲突解决方法

    本次学习的是解决不同分支提交的内容不同导致合并冲突,及怎样解决冲突.       基本命令: git log --graph查看分支合并图       具体步骤: 新建分支branch1,并修改rea ...

  7. git 强制覆盖,分支合并

    强制合并 git fetch --all && git reset --hard origin/master && git pull 合并代码 git commit - ...

  8. NO.A.0006——Git在IntelliJ IDEA中的使用/创建项目并推送到GitHub仓库/分支管理及分支合并

    一.在IntelliJ IDEA中使用Git: 1.在IDEA下创建项目并编写一个main方法的工程: 在IDEA下新建一个Project IDEA-->新建一个Project-->Fil ...

  9. git冲突解决、线上分支合并、luffy项目后台登陆注册页面分析引入

    今日内容概要 git冲突解决 线上分支合并 登陆注册页面(引入) 手机号是否存在接口 腾讯云短信申请 内容详细 1.git冲突解决 1.1 多人在同一分支开发,出现冲突 # 先将前端项目也做上传到 g ...

随机推荐

  1. setInterval 和 setTimeout

    setInterval 和 settimeout的区别 setinterval 1.会造成某些间隔会被跳过2.多个定时器之间的执行代码事假间隔比预期的小 而且 当定时器代码添加到任务队列里面没有被执行 ...

  2. 重温JavaScript预编译的四个步骤

    JS是解释型语言,运行过程分三步: 一.语法分析(检查代码是否存在语法错误): 二.预编译(代码执行之前,在内存中开辟空间,存放变量与函数): 三.解释执行(执行JS代码): 理解预编译的过程,对于理 ...

  3. 【leetcode】 Permutation Sequence

    问题: 对于给定序列1...n,permutations共同拥有 n!个,那么随意给定k,返回第k个permutation.0 < n < 10. 分析: 这个问题要是从最小開始直接到k, ...

  4. 在ASP.NET Web API中使用OData的Containment

    通常情况下,一个OData的EDM(Entity Data Model)在配置的时候定义了,才可以被查询或执行各种操作.比如如下: builder.EntitySet<SomeModel> ...

  5. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(2)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

  6. 多线程UI

    遇到过要在工作线程中去更新UI以让用户知道进度,而在多线程中直接调用UI控件操作是错误的做法. 最后解决方法是将操作UI的代码封装,通过Invoke / BeginInvoke 去委托调用. priv ...

  7. 如何解决SSH连接Linux超时自动断开?

    最近项目开发中用到云服务器,部署了MySQL,开发团队总是反映MySQL过一会儿就断开连接了,必须手动重连才可以.反映越来越强烈,已经到了影响开发进度的高度了,必须解决! 查了资料,这个可能和SSH超 ...

  8. 《Java性能优化权威指南》

    <Java性能优化权威指南> 基本信息 原书名:Java performance 原出版社: Addison-Wesley Professional 作者: (美)Charlie Hunt ...

  9. Kubernetes基础

    Kubernetes是什么 Kubernetes是当今最流行的开源容器管理平台,它就是大名鼎鼎的Google Borg的开源版本.Google在2014年推出了Kubernetes,本文发布时最新的版 ...

  10. SVG.js 基础图形绘制整理(一)

    一.矩形 //指定width和height 画矩形 //返回rect对象 var draw = SVG('svg1').size(300, 300); var rect = draw.rect(100 ...