美文网首页
git常用命令与原理分析

git常用命令与原理分析

作者: 34sir | 来源:发表于2018-02-24 17:09 被阅读13次

merge

作用
合并指定分支到当前分支,此种方式直接改变指针,是一种“快进模式”

如果出现冲突 则必须手动解决冲突后再提交
与rebase的区别
merge会保留之前分支的提交 而rebase在git垃圾回收之后之前子分支的提交会被舍弃

原理

假设现在基于远程分支"origin",创建一个叫"mywork"的分支

$ git checkout -b mywork origin

假设远程分支"origin"已经有了2个提交,如图


origin.png

现在我们在这个分支做一些修改,然后生成两个提交(commit):

$ vi file.txt
$ git commit
$ vi otherfile.txt
$ git commit
...

但是与此同时,有些人也在"origin"分支上做了一些修改并且做了提交了. 这就意味着"origin"和"mywork"这两个分支各自"前进"了,它们之间"分叉"了

分叉.png
这里,你可以用"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并:
git merge:结果看起来像是一个新的合并的提交 merge.png

rebase

同样上述中栗子,rebase可以做到让"mywork"分支历史看起来像没有经过任何合并一样

rebase.png
当'mywork'分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。 如果运行垃圾收集命令(pruning garbage collection), 这些被丢弃的提交就会删除. (请查看 git gc) rebase.png

冲突

rebase的过程中,也许会出现冲突。在这种情况,git会停止rebase并会让你去解决冲突;在解决完冲突后,用git-add命令去更新这些内容的索引 然后,你无需执行 git-commit,只要执行:
$ git rebase --continue
这样git会继续应用余下的补丁
在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态
$ git rebase --abort

rebase和merge有哪些区别?
区别在于提交历史以及提交的顺序:

rebase vs merge.png
当我们使用git log来参看commit时,其commit的顺序也有所不同
假设C3提交于9:00AM,C5提交于10:00AM,C4提交于11:00AM,C6提交于12:00AM,
对于使用git merge来合并所看到的commit的顺序(从新到旧)是:C7 ,C6,C4,C5,C3,C2,C1
对于使用git rebase来合并所看到的commit的顺序(从新到旧)是:C6‘,C5',C4,C3,C2,C1
因为C6'提交只是C6提交的克隆,C5'提交只是C5提交的克隆,
从用户的角度看使用git rebase来合并后所看到的commit的顺序(从新到旧)是:C6,C5,C4,C3,C2,C1

--no-ff

作用
禁用fast forward

fast forward会看不到合并信息 所以开发过程中最好禁用

stash

作用
将线程存储起来 等现场恢复后再继续工作

使用方式

  • git stash list:查看线程保存位置
  • git stash apply:恢复现场 但不删除stash
  • git stash drop:主动删除stash
  • git stash pop: 恢复同时删除stash
  • git stash apply stash@{0}:恢复指定stash

相关文章

  • git操作

    Git原理 Git常用命令

  • Git

    Git原理与常用命令总结 1.Git机制 基本名词:仓库(Repository)、分支(Branch)、工作流(w...

  • 2018-07-12

    内容 基本原理 git 常用命令 较底层的原理 基本原理 Git 实际上是一个内容寻址系统。 Git 中保存的所有...

  • git常用命令与原理分析

    merge 作用:合并指定分支到当前分支,此种方式直接改变指针,是一种“快进模式” 如果出现冲突 则必须手动解决冲...

  • git

    git 简单介绍 版本控制工具,用来记录变化过程 git 常用命令 git 原理 1、git分为4层,工作空间、缓...

  • Git命令相关

    git的重要概念及工作原理 工作区 暂存区(staged) 分支(HEAD) 1. Git常用命令可总结如下图: ...

  • git相关教程汇总

    1. git常用命令 git常用命令总结git常用命令讲解 2. git教程相关网站 廖雪峰的git教程猴子都能懂...

  • git 常用命令

    git 常用命令 level1: 初始化仓库:git init 与远程仓库关联:eg: $ git remote ...

  • 图解 Git 工作原理,看了秒懂!

    前言 在乐字节公开课上学习了git原理,分享出来大家学习。 正文 本文图解Git中的最常用命令...

  • git命令整理

    git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...

网友评论

      本文标题:git常用命令与原理分析

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