查看commit的修改文件
查看最后一次的提交
git log -n 1
查看最近一次提交所有更改过的文件
git log -n 1 --stat
查看最近一次提交所有更改的细节
git log -n 1 -p
查看提交树状图
git log --oneline --graph --decorate --all
强制更新本地
提交了新的commit,远程被同事修改后提交覆盖了该节点,即远程该commit上的代码和我本地的commit的内容不一致。此时将本地的更新为远程的commit,假设该commit在dev分支上:
1 | git checkout dev |
git修改commit信息
有时提交了commit后发现message有问题,修改修改。分以下情况:
- 使用了
git commit
,还没有push,使用git commit --amend
; - 如果已经push,且需要修改的commit是最新的,使用
git commit --amend
; - 修改历史中的push的commit信息,使用
git rebase -i HEAD~n
(n为记录数), 配合git commit --amend
命令;
修改最新的未push的commit
1 | git commit --amend |
出现编辑界面,编辑后退出即可。
它的原理是产生一个新的提交对象,替换掉上一次提交产生的提交对象。
这时如果暂存区有发生变化的文件,会一起提交到仓库。所以,–amend不仅可以修改提交信息,还可以整个把上一次提交替换掉。
替换上一次提交
提交以后,发现提交信息写错了,这时可以使用git commit命令的–amend参数,可以修改上一次的提交信息。
1 | git commit --amend |
它的原理是产生一个新的提交对象,替换掉上一次提交产生的提交对象。
这时如果暂存区有发生变化的文件,会一起提交到仓库。所以,–amend不仅可以修改提交信息,还可以整个把上一次提交替换掉。
如果被覆盖的commit已经提交到远程,使用git push
会提示出错,应使强制提交:
1 | git push -f |
修改历史提交记录
假设需要修改的commit之后以及提交了3个commit,
1 | git rebase -i HEAD~4 |
进入编辑界面,将需要修改的那个commit的pick
改成edit
,保存并退出。然后:
1 | git commit --amend |
编辑修改,并保存退出。回到正常分支上:
1 | git rebase --continue |
最后强制提交即可:
1 | git push -f |