查看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
2
3
4
git checkout dev
git fetch --all # 获取远程修改,但不合并到本地
git reset --hard origin/dev # 把HEAD指向刚刚下载的最新版本
git pull

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
2
3
git commit --amend
# 或
git commit --amend -m "new message"

出现编辑界面,编辑后退出即可。

它的原理是产生一个新的提交对象,替换掉上一次提交产生的提交对象。
这时如果暂存区有发生变化的文件,会一起提交到仓库。所以,–amend不仅可以修改提交信息,还可以整个把上一次提交替换掉。

替换上一次提交

提交以后,发现提交信息写错了,这时可以使用git commit命令的–amend参数,可以修改上一次的提交信息。

1
2
3
git commit --amend
# 或
git commit --amend -m "new msg"

它的原理是产生一个新的提交对象,替换掉上一次提交产生的提交对象。

这时如果暂存区有发生变化的文件,会一起提交到仓库。所以,–amend不仅可以修改提交信息,还可以整个把上一次提交替换掉。

如果被覆盖的commit已经提交到远程,使用git push会提示出错,应使强制提交:

1
2
3
4
git push -f
# 或
git push origin dev --force
# 本地分支强制替换掉远程分支,慎重使用。确保强制push不会覆盖了别人的代码,如果这个分支只有你维护那就可以为所欲为了。

修改历史提交记录

假设需要修改的commit之后以及提交了3个commit,

1
git rebase -i HEAD~4

进入编辑界面,将需要修改的那个commit的pick改成edit,保存并退出。然后:

1
git commit --amend

编辑修改,并保存退出。回到正常分支上:

1
git rebase --continue

最后强制提交即可:

1
git push -f