01、git暂存原理

  • 每个文件SHA-1校验和
  • 使用blob对象保存当前版本文件快照到git仓库
  • 将校验和加入暂存区域等待提交

02、git提交原理

  • 树对象:计算每个子目录校验和,在git仓库中保存这些校验和为树对象
  • 提交对象(commit object):git会保存一个提交对象,包含暂存内容快照的指针、作者姓名、邮箱、提交信息、父对象指针(首次提交不存在,合并分支时可能有多个)、指向树对象根目录的指针

03、git非首次提交(提交对象会包含父对象)

  

 

04、git分支本质(41个字节=40提交对象SHA-1 + 1换行)

  指向提交对象的可变指针,每次提交都会自动向前移动

05、创建分支

  $ git branch testing  (在当前提交对象上创建一个新的可变指针)

06、HEAD分支

  指向当前本地所属分支

07、查看分支

  $ git log --oneline --decorate --graph --all  (查看提交对象 & 对应分支)

08、切换到已存在分支

  $ git checkout <branch>  (切换HEAD指针到指定分支,并将工作区切换)

09、新建并切换到新建分支

  $ git checkout -b <branch>

10、合并分支

  $ git merge <branch>  (将branch分支合并到当前分支)

    • 快进(fast-forward):当前分支是merge分支的祖先级别分支,会直接快进,不会创建新的提交
    • 三方合并:找到2个分支共同的祖先,三方合并

11、冲突解决

  $ git status  (查看Unmerged paths包含所有冲突文件,打开文件编辑冲突)

  $ git mergetool  (图形化工具解决冲突,退出后,git会询问冲突是否解决,若选择是,git会暂存解决的文件)

  直接编辑冲突文件,然后git add <file>,然后提交

12、删除分支

  git branch -d <branch>  (仅删除本地,若分支内容未merge,则需要用-D删除)

  git push <remote-name> --delete <branch-name>  (删除远程分支,不能删除远程默认分支)

13、查看分支

  git branch  (查看本地分支列表,带星号的表示检出分支)

  git branch -v  (查看本地分支列表 & 最后一次提交)

  git branch --merge  (本地已经合并到当前分支的分支,包含当前分支)

  git branch --no-merge  (本地未合并到当前分支的分支,使用git branch -d删除时会报错,需用-D强删)

  git branch -a  (查看本地分支 & 远程分支)

  

 

posted on 2020-04-07 22:55  TBBS  阅读(105)  评论(0编辑  收藏  举报