git 常用命令及解释

111 阅读2分钟

示例截图使用的是开源仓库reveal.js

查看历史记录

git log -p -1 查看最近一条提交记录

image.png

git log -p -1 --stat 查看最近一条提交记录并显示统计信息

image.png

git show commit_hash 查看指定commit的信息。可以使用 --stat 参数

image.png

对比文件

git diff 对比工作区和暂存区文件的差异

image.png

git diff --staged 对比暂存区和最后一次提交的差异

image.png

git diff HEAD 对比工作区、暂存区和最后一次提交的差异

image.png

image.png

git diff <branch_name1> <branch_name2> 对比两个分支的差异

示例:git diff master...test

image.png

git diff <commit_hash> <commit_hash> 对比两个分支的差异

示例:git diff b23d15c...fc7736a

需要注意到是commit_hash的顺序会影响输出结果

image.png

以上命名都可以追加 <file_name>,来精准查看某个文件的变化

git diff b23d15c...fc7736a demo.html

image.png

操作commit

git rebase -i head~3 编辑最近3次提交

进入编辑模式可以调整commit顺序

压缩commit:一般常用是 s:合并保留commit msg 和 f:合并但是不保留commit msg image.png

git merge master 合并master分支到当前分支.以当前分支为基准,对比和master的节点是否存在分支差异:即从某个节点开始,两个分支都产生了自己的commit,存在则生成一个新的merge commit。否则Fast-forward

image.png

git rebase master 以master作为变基的参照,拆掉当前分支和master分支差异的commit。再依次commit到master

image.png

git commit --amend 快速修改最后一次提交的commit message

image.png

和远端进行交互

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 外,可以参考👇

推荐阅读:安全回滚分支