示例截图使用的是开源仓库reveal.js
查看历史记录
git log -p -1 查看最近一条提交记录
git log -p -1 --stat 查看最近一条提交记录并显示统计信息
git show commit_hash 查看指定commit的信息。可以使用 --stat 参数
对比文件
git diff 对比工作区和暂存区文件的差异
git diff --staged 对比暂存区和最后一次提交的差异
git diff HEAD 对比工作区、暂存区和最后一次提交的差异
git diff <branch_name1> <branch_name2> 对比两个分支的差异
示例:git diff master...test
git diff <commit_hash> <commit_hash> 对比两个分支的差异
示例:git diff b23d15c...fc7736a
需要注意到是commit_hash的顺序会影响输出结果
以上命名都可以追加 <file_name>,来精准查看某个文件的变化
git diff b23d15c...fc7736a demo.html
操作commit
git rebase -i head~3 编辑最近3次提交
进入编辑模式可以调整commit顺序
压缩commit:一般常用是 s:合并保留commit msg 和 f:合并但是不保留commit msg
git merge master 合并master分支到当前分支.以当前分支为基准,对比和master的节点是否存在分支差异:即从某个节点开始,两个分支都产生了自己的commit,存在则生成一个新的merge commit。否则Fast-forward
git rebase master 以master作为变基的参照,拆掉当前分支和master分支差异的commit。再依次commit到master
git commit --amend 快速修改最后一次提交的commit message
和远端进行交互
git push 将当前所处分支推送到远端同名分支。全等于 git push origin master:master (如果所处是master分支)
git push origin head 将当前头指针推送到远端本地同名分支。一般情况head都指向当前所处分支。请不要随意尝试
git push origin head:fix/bug001 将当前头指针推送到远端fix/bug001分支。在修复bug的时候,非常好用,就不需要再本地创建bug分支了
git push origin -D test 删除远端test分支
git fetch -p 删除(修剪)本地存储库中不再存在于源上的所有远程跟踪分支
其他
git checkout <file_name> or . : 恢复文件到暂存区的状态。所以add 过后的文件是checkout不掉的
git stash、git cherry-pick 都比较简单,不再介绍
如果在使用 merge 、rebase、cherry-pick 等出现冲突。不要惊慌,加上 --abort就可以取消此次操作
后记
如果你想回滚代码到某次提交,但是不修改历史提交记录。除了使用 revert 外,可以参考👇
推荐阅读:安全回滚分支