是否遇到过这种情景:
您在一个分支上工作,发现该分支上的某些文件实现的功能已经在其他分支上实现了
但因为这两个分支实现不同的功能,因此不能进行简单的合并工作,但您又不想重复其他已经完成的工作
以下操作可以解决该问题:
 
处理流程这样的:
  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. j.u.c系列(07)---之读写锁:ReentrantReadWriteLock

    写在前面 重入锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少.然而读服务不存在数据竞争问题,如果一 ...

  2. vuessr nuxt入门指南

    nuxt.js 官网地址:https://zh.nuxtjs.org/guide/installation 1.安装 vue init nuxt-community/starter-template ...

  3. CentOS 7使用通过二进制包安装MySQL 5.7.18

    安装依赖 yum install -y libaio 下载 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux- ...

  4. How to create .gitignore file in Windows Explorer

    How to create .gitignore file I need to add some rules to my .gitignore file, however, I can't find ...

  5. Go Session 使用简介

    6.session和数据存储 6.1 session和cookie 6.2 Go如何使用session 6.3 session存储 6.4 预防session劫持 6.5 小结

  6. ubuntu的配置文件

    ubuntu的配置文件 是 ~/.gconf 我是把终端弄挂了, 只能再桌面系统下找到 ~/.gconf 下的相应文件 修改后就恢复到原来状态.

  7. JavaScript进阶系列07,鼠标事件

    鼠标事件有Keydown, Keyup, Keypress,但Keypress与Keydown和Keyup不同,如果按ctrl, shift, caps lock......等修饰键,不会触发Keyp ...

  8. Linux 用户和用户操作

    1,创建组 groupadd test 增加一个test组 2,修改组 groupmod -n test2 test 将test组的名子改成test2 3,删除组 groupdel test2 删除  ...

  9. 【java】判断某段字符串的编码方式,并按照新的编码方式输出

    具体操作: String destination ="testå¾·ç\u008E\u009B西äº\u009A"; try { if(destination.equals(n ...

  10. kettle 数据提取效率提升

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xpliruizhi123/article/details/54580850 最近发现KETTLE抽数 ...