精华内容
下载资源
问答
  • Git 合并

    千次阅读 2017-08-08 14:13:16
    git merge git diff --ours/HEAD --theirs/MERGE_HEAD --base git log --merge --left-right --p git ls-files -u git ls-files -s git reset --hard HEAD

    一、合并
    为了把 other_branch 合并到 branch 中,你应该检出目标分支并把其他分支合并进去,如下所示:

    $ git checkout branch
    $ git merge other_branch
    

    二、为合并做准备
    在开始合并之前,最好整理一下工作目录。在正常合并结束的时候,Git 会创建新版本的文件并把它放到工作目录中。此外,Git 在操作的时候还用索引来存储文件的中间版本。
    如果已经修改了工作目录中的文件,或者已经通过 git add 或者 git rm 修改了索引,那么版本库里就已经有了一个脏的工作目录或者索引。如果在脏的状态下开始合并,Git 可能无法一次和并所有分支以及工作目录或索引的修改。
    不必从干净的目录启动合并。例如,当受合并操作影响的文件和工作目录的脏文件无关的时候,Git 才进行合并。然而,作为一般规则,如果每次合并都从干净的工作目录和索引开始,那么关于 Git 的操作将会容易得多。

    三、处理合并冲突
    一个分支上的修改可能与一个不同的分支上的相似或完全不同。修改可能会改变相同的或无关的文件。Git 可以处理所有这些不同的可能性,但是通常需要你的指导来解决冲突。

    定位冲突文件:
    使用 git status 命令或者 git ls-files -u 命令来显示工作树中任然未合并的一组文件。

    $ git status
    On branch master
    You have unmerged paths.
      (fix conflicts and run "git commit")
      (use "git merge --abort" to abort the merge)
    
    Unmerged paths:
      (use "git add <file>..." to mark resolution)
    
            both modified:   name.txt
    
    no changes added to commit (use "git add" and/or "git commit -a")
    
    $ git ls-files -u
    100644 e58835da4f1858ae5e279334b5dc747340635408 1       name.txt
    100644 7dab57c084e10c2125de87e512b81fb1305c3801 2       name.txt
    100644 27606668f6313d817d211efc570c4853a704c84a 3       name.txt
    

    可以使用 git diff 命令来显示没合并的内容,但是它也会显示所有的细节。

    检查冲突
    当冲突出现时,通过三方比较或合并标记强调工作目录中的每个冲突文件的副本。

    $ cat name.txt
    foo
    wt
    <<<<<<< HEAD
    aj
    =======
    dj
    >>>>>>> new-branch
    

    合并标记划定文件冲突部分的两个可能版本。可以简单地选择其中一个,移除冲突标记,然后执行 git add 和 git commit 命令。
    三方合并标记线(<<<<<<<、=======、>>>>>>>)是自动生成的,它们只是给提供给你看的,一旦解决了冲突,就应该在文本编译器里删除他们。

    对冲突使用 git diff 命令:
    Git 有一个特殊的。特定于合并的 git diff 辩题来同时显示针对两个父版本做的修改

    $ git diff
    diff --cc name.txt
    index 7dab57c,2760666..0000000
    --- a/name.txt
    +++ b/name.txt
    @@@ -1,8 -1,8 +1,9 @@@
      foo
      ang
      msh
      wt
    ++<<<<<<< HEAD
     +aj
    ++=======
    + dj
    ++>>>>>>> new-branch
    

    这只是两个 diff 文件的简单组合:一个对应第一个称为 HEAD 的父版本,另一个对应第二个称为 new-branch 的父版本。Git 也给第二个父版本起了一个特殊的名字——MERGE_HEAD。

    可以拿 HEAD 和 MERGE_HEAD 版本跟工作目录(“合并的”)版本进行比较。

    在较新版本的 Git 中,git-diff –ours 是 git diff HEAD 的同义词,因为它显示了“我们的”版本和合并后版本的区别。同样,git diff MERGE_HEAD 可以写成 git diff –theirs。可以用 git diff –base 命令来查看自合并基础之后的变更组合。

    对冲突使用 git log 命令:
    在解决冲突的过程中,可以使用一些特殊的 git log 选项来帮助你找出变更的确切来源和原因。

    $ git log --merge --left-right -p
    commit < 245370451d194bbff90a7bd6236a37b129831211
    Author: Jon Loeliger <jdl@example.com>
    Date:   Tue Aug 8 10:30:59 2017 +0800
    
        add aj
    
    diff --git a/name.txt b/name.txt
    index e58835d..7dab57c 100644
    --- a/name.txt
    +++ b/name.txt
    @@ -5,3 +5,4 @@ ang
     msh
     wt
    +aj
    
    commit > e0b4372b68ad435586d8d1015d665c15edb5a870
    Author: Jon Loeliger <jdl@example.com>
    Date:   Tue Aug 8 10:28:55 2017 +0800
    
        add dj
    
    diff --git a/name.txt b/name.txt
    index e58835d..2760666 100644
    --- a/name.txt
    +++ b/name.txt
    @@ -5,3 +5,4 @@ ang
     msh
     wt
    +dj
    

    在合并中的两个分支都影响冲突的文件,此命令将显示这两部分历史中的所有提交,并显示每次提交引入的实际变更。

    git log 的选项如下:

    • –merge:只显示跟产生冲突的文件相关的提交。
    • –left-tight:如果提交来自合并的“左”边则显示<(“我们的”版本,就是你开始的版本),如果提交来自合并的“右”边则显示>(“他们的”版本,就是你要合并到的版本)
    • –p:显示提交信息和每个提交相关联的补丁。

    如果版本库更加复杂而且有好几个文件发生冲突,也可以在命令行参数里指定确切的文件名:

    $ git log --merge --left-right -p hello
    

    小规模的提交和更频繁的合并周期可以减少解决冲突的痛苦。

    结束解决冲突
    在宣布合并前对冲突文件做最后一次修改。

    $ cat name.txt
    foo
    ang
    msh
    wt
    aj
    dj
    

    该文件已经完全合并而且解决冲突了,git add 命令就把索引再次简化为只有一份 name.txt 文件的副本。

    $ git add name.txt
    
    $ git ls-files -s
    100644 088e2309c5b9be087c7a93c3da99c040714fa4a2 0       name.txt
    

    git ls-files 的 -s 参数显示所有文件的各个阶段。
    在 SHA1 和路径名中间单独的 0 表示无冲突文件的暂存编号是零。
    必须解决索引中记录的所有冲突文件。只要有未解决的冲突就不能提交。因此,当解决一个文件的冲突之后,执行 git add(或者 git rm、git update-index等)以清除它的冲突状态。

    注意:不要对有冲突标记的文件执行 git add 命令。虽然这会清除索引中的冲突,并允许提交,但文件将是错误的。

    最后,对最终结果执行 git commit 命令。

    中止或重新启动合并
    在合并提交执行最后的 git commit 命令前,使用如下命令:

    $ git reset --hard HEAD
    

    这条命令立即把工作目录和索引都还原到 git merge 命令之前。

    如果要中止或在它已经结束(也就是,引进一个新的合并提交)后放弃,请使用以下命令:

    $ git reset --hard ORIG_HEAD
    

    在开始合并操作前,GIt 把原分支的 HEAD 保存在 ORIG_HEAD .这是为了这种目的。

    展开全文
  • git合并分支

    万次阅读 多人点赞 2019-08-29 20:50:22
    在开发的过程中我们一般会有开发分支和线上的...git 合并分支到master 假如我们现在在dev分支上,刚开发完项目,执行了下列命令 git add . git commit -m ‘dev’ git push -u origin dev 然后我们要把dev分支的代码...

    在开发的过程中我们一般会有开发分支和线上的主分支,我们一般都是在开发分支去进行开发项目,等指定功能或迭代都实现后才会合并开发分支到主分支上。那么我们今天就来分享如何合并分支。

    场景:
    git 合并分支到master

    实际场景:
    假如我们现在在dev分支上,刚开发完项目,执行了下列命令

    $ git add .
    $ git commit -m 'dev'
    $ git push -u origin dev
    
    然后我们要把dev分支的代码合并到master分支上 该如何?
    1. 首先切换到master分支上
    $ git checkout master
    

    如果是多人开发的话 需要把远程master上的代码pull下来

    $ git pull origin master
    

    如果是自己一个开发就没有必要了,但是为了保险起见还是pull一下

    2.然后我们把dev分支的代码合并到master上
    $ git merge dev
    
    3.然后查看状态
    $ git status
    
    $ On branch master
    $ Your branch is ahead of 'origin/master' by 12 commits.
    $ (use "git push" to publish your local commits)
    $ nothing to commit, working tree clean
    

    上面的意思就是你有12个commit,需要push到远程master上

    4.执行下面命令即可
    $ git push origin master
    

    这样就可以了

    使用webstrom编辑器的朋友可以不用敲命令,直接用编辑器就好了

    第一步:
    在这里插入图片描述

    第二步:
    在这里插入图片描述
    第三步:
    如果有冲突就解决冲突就好了,

    注意:如果后面的分支显示有一个上箭头那就是那个分支还有代码没有上传
    如果后面的分支显示有一个下箭头那就是那个分支还有代码需要更新下来,需要使用ctrl + t拉取最新代码。

    在这里插入图片描述

    展开全文
  • git合并分支流程

    万次阅读 2020-08-07 08:31:07
    git 合并分支 情景: 现有两个分支: master 主分支,已经上线 dev 开发分支 因为master分支有一些上线的配置,所以需要将master合并到dev上 然后测试无误后,再将dev分支合并回master 详情如下: # ...

    git 合并分支

    情景:

    现有两个分支:

    master 主分支,已经上线

    dev 开发分支

     

    因为master分支有一些上线的配置,所以需要将master合并到dev上

    然后测试无误后,再将dev分支合并回master

     

    详情如下:

    # 查看分支信息

    $ git branch

    * dev

      master

    # 切换到master

    $ git checkout master

    # 查看标签信息

    $ git tag -l 

    v1.0

    # 添加版本提交记录

    $ git add tag_info.txt

    $ git commit -m 'add tag for version'

    $ git push origin master

    # 添加标签

    $ git tag -a v1.1 -m "version yyyy.mm.dd"

    # 推送标签

    $ git push origin master v1.1

    # 查看标签信息

    $ git tag  

    v1.0

    v1.1

    # 截止到当前步骤,已经将master做了commit备份和tag备份

     

    # 先拉取

    $ git pull

    # 切换到dev分支

    $ git checkout dev

    # 将master分支合并到dev分支上

    $ git merge master

    # 如果

    Auto-merging cons/urls.py

    Auto-merging Project_test/settings.py

    CONFLICT (content): Merge conflict in Project_test/settings.py

    Automatic merge failed; fix conflicts and...更多点击这里这里

    展开全文
  • 取消git合并分支

    千次阅读 2019-06-12 17:30:49
    git merge --abort 取消git合并分支 合并分支出现错误时取消合并 直接回滚不好 因为当前分支会进入merge状态

    git merge --abort 取消git合并分支
    合并分支出现错误时取消合并
    直接回滚不好 因为当前分支会进入merge状态

    展开全文
  • Git合并远程分支

    万次阅读 2018-07-08 21:20:46
    【前言】 众所周知,Git在代码管理方面做的十分的灵活来适应各种各样的版本(正常版本,修复Bug版本等)迭代,业界一般遵从的原则:利用分支进行...下面为大家介绍一下用git命令进行远程分支合并。 【合并远程...
  • idea git 合并分支

    万次阅读 多人点赞 2018-07-12 16:22:20
    idea git的使用(四)git建立分支与合并分支作者:马育民 • 2017-11-10 17:05 • 阅读:103571. 为什么要建立分支git默认的主分支名字为master,一般团队开发时,都不会在master主分支上修改代码,而是建立新...
  • git 合并指定文件

    千次阅读 2019-01-10 16:07:01
    git 合并指定文件 只想将A分支的某个文件test.txt合并到B分支上。 git checkout A git checkout --patch B test.txt 第一个命令: 切换到A分支; 第二个命令:合并B分支上test.txt文件到A分支上。 此时命令行会显示 ...
  • git 合并策略

    千次阅读 2019-02-24 15:56:13
    不清楚 git 冲突的表示方法,不了解 git合并原理,不知道 git 解冲突的多种策略。即便如此,大多数人依然可以正常使用 git 完成合并、拉取操作,并且解一些冲突。这得益于 git 默认情况下的合并方式可以处理...
  • git合并远程分支

    千次阅读 2019-01-04 17:46:05
    git合并远程分支 # 1. 把源码clone到本地 git clone [gitsite git远程网址] # 2. 在本地建立一个和远程分支相同的本地分支 git checkout -b dev origin/dev # 3. 切换到主分支master git checkout master # 4. 将...
  • git合并分支错误,git融合分支错误,git merge错误,git冲突 git合并分支冲突,git ,git merge conflict error,git冲突 git合并冲突解决,git错误解决,git merge 冲突 在做项目工作的时候,同事修改了代码...
  • IDEA中Git合并冲突

    千次阅读 2018-04-02 20:40:24
    IDEA中Git合并冲突 先commit本地修改的文件到本地repository pull源码,因为存在代码冲突,所以接下来会自动弹出merge融合窗口,如下图: 点击左边的 &gt;&gt; 试试 点击右边的 &lt;&...
  • idea git 合并分支 注意:其中图片可能与最新的idea版本有些出入,不要纠结 ...
  • Git合并两个仓库

    千次阅读 2017-05-31 17:16:30
    Git合并两个仓库将远程仓库下载到本地1.将远程仓库下载到本地git clone 地址2.将下载的地址作为你的远程仓库地址git remote add 仓库名称 地址3.抓取仓库数据到本仓库中git fetch 仓库名称然后你就可以创建本地分支...
  • idea+git合并分支解决冲突及详解步骤

    万次阅读 多人点赞 2019-06-15 23:04:29
    Git详解参考:https://blog.csdn.net/su1573/article/details/91988523 1、 切换分支 ... 2)在git 分支选择框中选择项目一步步选择需要的分支 ...2、合并bug分支001到master主干分支 1) 更新本分...
  • git合并不同仓库的修改

    千次阅读 2018-07-19 16:41:41
    git合并不同仓库的修改 有时候新的方案是衍生至老的方案,很多问题在老方案都有解决方案了,如何把老方案的修改合并到新的方案? 这里提供一种解决方法,前提是在两个仓库中的代码路径是一致的,文件名是一致的,...
  • git合并单个文件到一个分支上

    千次阅读 2020-04-20 17:56:09
    git合并单个文件到一个分支上
  • Git 合并多次 commit 、 删除某次 commit

    万次阅读 多人点赞 2018-07-21 16:12:17
    Git 合并多次 commit   有时候在一个分支的多次意义相近的 commit,会把整个提交历史搞得很混乱,此时可以将一部分的 commit 合并为一个 commit,以美化整个 commit 历史,可以使用 rebase 的方法来合并多次 ...
  • git合并已经push的提交记录

    千次阅读 2020-08-10 20:54:29
    1.git合并已经push的提交记录 #查看提交日志 git log #xxxxx代表要修改的记录之前的位置对应的id,尽量往下面显示的选(往下面的越早提交) git rebase -i xxxxx #将要去掉的那条记录把pick换成f pick-->f #wq...
  • Git 合并远程分支

    万次阅读 2017-11-12 11:14:15
    前言有的时候我们需要跟别人合作进行开发,然后分别使用不同的Git分支,等项目完成时,需要进行代码合并,就需要知道Git如何合并远程分支。步骤假设你本地在使用的分支为a(master也是一样的),需要合并的远程分支为b...
  • Git 合并时 --no-ff 的作用

    万次阅读 多人点赞 2018-08-29 10:22:41
    在许多介绍 Git 工作流的文章里,都会推荐在合并分支时,加上 --no-ff 参数: $ git checkout develop $ git merge --no-ff feature --no-ff 在这的作用是禁止快进式合并Git 合并两个分支时,如果顺着一...
  • Git合并指定文件到另一个分支

    万次阅读 2018-11-08 17:25:17
    Git合并指定文件到另一个分支 经常被问到如何从一个分支合并特定的文件到另一个分支。其实,只合并你需要的那些commits,不需要的commits就不合并进去了。 合并某个分支上的单个commit 首先,用git log或sourcetree...
  • git合并丢失代码问题分析与解决

    千次阅读 2018-08-08 21:34:34
    git合并丢失代码问题分析与解决 转自简书,写的真心赞   问题描述 我们在主干dev和branch1分支上进行并行开发。当要把branch1功能的代码合并到dev上时,发现dev上开发的部分功能代码找不到了。 那么,是在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 133,207
精华内容 53,282
关键字:

git合并