zoukankan      html  css  js  c++  java
  • GIT 如何从另一分支合并特定的文件

    是否遇到过这种情景:
    您在一个分支上工作,发现该分支上的某些文件实现的功能已经在其他分支上实现了
    但因为这两个分支实现不同的功能,因此不能进行简单的合并工作,但您又不想重复其他已经完成的工作
    以下操作可以解决该问题:
     
    处理流程这样的:
    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 文件"合并其他分支的文件会覆盖当前分支的文件,所以在提交之前必须手动合并差异
    QQ截图20150805100649.jpg
    参考:
     
     
     



  • 相关阅读:
    UVA 707
    我写了一起 Makefile(一)
    百度mp3接口
    MBProgressHUD -[__NSCFString sizeWithAttributes:]: unrecognized selector问题解决了
    BCM策略路由交换芯片
    HDU 4006 The kth great number AVL解
    PHP进口Excel至MySQL方法
    隐藏Console形式无效(继续1)
    优秀的前端project如何制定一个老师--html学习路径
    地址阵列
  • 原文地址:https://www.cnblogs.com/huangtailang/p/4702339.html
Copyright © 2011-2022 走看看