写在前面:
现在还只是杂乱的记录,部分内容在公司,需要时间手工搬运出来…

普通合入引发的冲突

方法1(推荐):使用re

  1. git fetch
    下载所有分支的最新的远端分支(看一下如何下载某个特定分支)
  2. git re origin/master
    以origin/master分支为基线,合入master分支的修改。
    手动解决冲突
  3. git add -A;git re --continue
    冲突解决完成之后,提交修改
  4. git push origin master:refs/for/master
    推送到远端服务器

方法2:使用merge

  1. git fetch
    下载所有分支的最新的远端分支(看一下如何下载某个特定分支)
  2. git checkout origin/master
    直接切到远端的master分支
  3. git merge master
    将master分支的修改合入
    手动解决冲突
  4. git add -A;git commit
    提交修改
  5. git push origin HEAD:refs/for/master
    推送到远端服务器

cherry-pick

cherry-pick是在服务端进行操作的,完全不涉及本地分支。
cherry-pick的原理可以简单理解为:
将两个提commit之间的差异(patch)应用到另一个分支上。那么,如果如果patch对应的源文件对应的行在另一个分支已经被改变了,那么就无法成功应用patch,会提示冲突。必须要在本地手动解决冲突。
假如要将master某个commit提交到dev分支,操作流程如下:

  1. git fetch
    下载所有分支的最新的远端分支(看一下如何下载某个特定分支)
  2. git checkout -B dev origin/dev
    直接用远端的dev分支覆盖本地的dev分支
  3. git checkout dev
    切换到dev分支
  4. git cheery-pick commitId
    手动解决冲突
  5. git add -A;git commit
    提交修改
  6. git puhs origin dev:refs/for/dev

git pull

网上搜到的解释都是说pull是fetch+merge操作的合并。
那么到底是谁merge谁,merge的过程中是否会产生新的提交,产生的提交push的时候又是否会推送到远端呢?
实践一下:

1. origin/master比master多一个节点

收藏 打印
您的足迹: