常用的git命令
clone
init
add
commit
branch
checkout | checkout -b
pull
push
status
log
merge
rebase
diff | diff staged
reset | reset head^ | --mixed(默认) --hard --soft 、head~数字、head 提交commitHash
revert
reset和revert的区别
reset 回退某一次commitHash的提交,中间的记录不会在soourceTree提现出来,reflog可以查看到中间的reset提交记录
revert 撤销某一次commitHash的提交,中间的提交保留
merge和rebase的区别
merge:我方、对方、双方最近的公共祖先对应的快照执行合并生成新快照,并创建一个链接特性分支和主干分支的合并节点,调整特性分支的指向新的合并节点。
rebase:重写历史提交节点,在最近的公共祖先开始,特性分支的暂存,以主干分支的最新提交为起点,依次将暂存的提交依次还原到新提交
共同点:作用都是整合分支间变更,最终形成的快照的代码内容结果是一致的
区别点:实现手段不同
结论:merge会新生成一个提交,增加代码审阅者的负担,rebase提交历史清爽,方便追溯工程的演进历史和缺陷排查
延伸:交互式rebase(命令加-i),对提交的重排、压缩、拆分、丢弃,reword squash drop等
辅助工具
图形化gitflow