面试-前端工程化-git

111 阅读1分钟

常用的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