Git 原理详解及实用指南 - merge,add,log

merge

  1. git merge就是合并,指定一个 commit 或者 branch,将其合并到当前 branch 或 commit 来。
  2. 目标commit当前commit分叉点起,将 目标commit 上的 所有commit 一并合并到 当前commit,并自动生成一个新的commit
git merge 示意图
图 - git merge 示意图

特殊情况,如何处理

放弃合并

当前处于解决冲突的中间状态, 通过 git merge --abort 取消合并,回到merge之前的状态。

HEAD领先于当前commit

合并之前的commit,这是一个无意义操作,Git什么也不会做。空merge。

HEAD落后于当前commit(快速前移)
  1. 在没有其它分支的情况下,Git会把HEAD指向的branch移动到目标commit。
  2. 当前在HEAD指向master分支,执行 git merge feature1 后的操作如下图所示:
    合并领先于HEAD的commit
图 - 合并领先于HEAD的commit
  1. 专有名词 - (快速前移)
    git pull 经常出现,比如当前master分支本地没有更新,同事推送了新的commit到远程仓库,那么在执行 git pull 时,目标commit(远程仓库最新commit) 领先于 当前commit(本地commit)HEAD会携带本地master分支快速前移
    git pull 实现原理
图 - git pull 实现原理

add

git add 添加的是文件改动,而不是文件

log

  1. git log -p[--patch] 查看具体到每个commit的改动细节。
  2. git log --stat 查看每个commit改动的文件。
  3. git show [commitId] [filePath] 查看当前commit的改动细节(精确到文件)。
  4. 对比
    1. git diff 查看当前工作区与暂存区的区别。
    2. git diff --staged[--cached] 查看当前暂存区与上一条commit的区别。
    3. git diff HEAD 查看当前工作区与上一条commit的区别。

本章命令总结

  1. git merge commit/branch 合并某个提交或分支
  2. git merge --abort 放弃当前合并
  3. git add . 添加某个文件改动到git暂存区
  4. git log 的详细操作 git log

引用声明

本文内容来自掘金小册-Git 原理详解及实用指南的学习笔记内容,图片等均来自原作者。此处只作为笔记记录。
请支持原作者购买信息