美文网首页
git rebase 和 git merge

git rebase 和 git merge

作者: foolish_hungry | 来源:发表于2019-01-17 17:18 被阅读0次

    创建一个本地仓库 testResp

    cd /User/../testResp
    

    初始化

    git init
    // 创建完仓库默认是一个 master 分支
    

    查看目录

    cd .git 
    open .  或者使用 tree .
    

    新建一个readme.md文件,往里面添加内容

    cd ..
    touch readme.md
    open readme.md
    

    添加到暂存区

    // 可以先 用 git status 查看状态
    git add .
    

    提交内容

    git commit -m '提交记录 A'
    

    创建分支 dev 分支, 并检出

    git checkout -b dev
    // 相当于 git branch dev  && git checkout dev
    

    在原来的文件 readme.md 中增加内容

    git add .
    

    在 dev 上提交修改了的 readme

    git commit -m "提交记录 B"
    

    切回到 master 分支

    git checkout master 
    

    修改 readme 文件, 并添加

    open readme.md
    git add .
    

    在 master 上提交修改的内容

    git commit -m '提交记录 C'
    

    在 master 上再添加一个新文件 hello.py

    touch hello.py 
    

    提交 hello.py

    git commit -m "提交记录 D"
    

    再切换到 dev 上添加 world.py 并提交

    git checkout dev
    touch world.py
    git add .
    git commit -m "提交记录 E"
    

    至此, 我们分析一下:
    master 分支的 节点指向链表 A -> C -> D
    dev 分支的 节点指向链表 A -> B -> E
    master 和 dev 分支上的祖先节点为 A

    在 master 分支上做 git merge dev 操作

    git checkout master
    

    提示, readme.md 产生冲突, 解决冲突, 再添加, 并提交

    open readme.md
    git add .
    git commit -m "提交记录 F"
    

    注意: 现在得到的提交历史为 A -> B -> C -> D -> E -> F
    查看 节点树 git log --oneline --graph --decorate --all
    对于这样的长命令, 可以定义命令别名 alias glgt='git log --oneline --graph --decorate --all'

    image.png

    查看提交历史记录

    git log
    

    采用git merge dev处理提交log是按照时间戳先后顺序的。

    采用的是git rebase处理过程为:

    git checkout dev
    git rebase master   // 将dev上的B、E在master分支上做一次衍合处理
    

    产生冲突, 解决冲突后, 执行

    open readme.md 
    git add .
    git rebase --continue
    

    执行 git log 可以看到, 不是按时间顺序处理的
    A - C - D - B - E
    git rebase可以得到一个更加简洁的提交历史,无需多了F。

    最后执行

    git checkout master 
    git merge dev  // 可以看到, 提交历史记录是一条线
    
    image.png

    注意:
    不要在 公共共享库上使用 git rebase , 比如我们的 master 和 dev 上, 不能使用。

    参考链接

    相关文章

      网友评论

          本文标题:git rebase 和 git merge

          本文链接:https://www.haomeiwen.com/subject/dboidqtx.html