在使用git协同工作时,偶然也会遇到commit
错误的时候,针对最后一次commit
错误的情况,应该如果修改处理呢?
先说结论
1,通过git commit --amend
命令 ,修改最后一次提交的commit
2,使用 git push origin -f branch
强制覆盖远程仓库。(-f
有风险,请谨慎使用,master 上不到万不得已千万别用)
操作实践
一 commit
只提交在本地仓库,未提交到远程仓库
这种场景解决起来比较容易,解决方法有如下两种:
- 修复错误代码后,发起一个新的
commit
$ git commit -am "这是一个新的commit"
这种方式使用的应该是比较多,也是最简单的,不是本次介绍的重点。
- 修复错误代码后,使用
commit --amend
首先使用 commit log
,查看需要修改到最后一次提交
$ git log
commit 34645b952f2656093e47a959594acb8cd714cf24 (HEAD -> master)
Author: *** <*******>
Date: Thu Oct 17 20:23:57 2019 +0800
提交测试commit
之后修改错误代码,把修改提交到暂存区
$ git add .
发起commit
修改
$ git commit --amend
会进入如下的界面
提交测试commit
//这里是新添加的,修改后的提交信息
oooooooooooooooo
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Thu Oct 17 20:23:57 2019 +0800
#
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
# (use "git push" to publish your local commits)
#
# Changes to be committed:
# modified: app/src/main/java/com/*****/activity/YLDemoMainActivity.java
#
~
~
~
~
~
~
~
"~/Documents/workspace/android/demo/YLDemo/.git/COMMIT_EDITMSG" 14L, 453C
输入修改后的提交信息,wq
退出就OK了。
再次使用使用 git log
查看,结果如下: 说明最后一次的commit
提交已经被我们修改好了
yanlongli@ ~/Documents/workspace/android/demo/YLDemo (master) $ git log
commit 34645b952f2656093e47a959594acb8cd714cf24 (HEAD -> master)
Author: *** <*******>
Date: Thu Oct 17 20:23:57 2019 +0800
提交测试commit
二 commit
已经提交到远程仓库
commit
已经被提交到远程仓库后,需要修改那就只能使用commit --amend
命令了。
- 首先需要使用
commit --amend
修改本地仓库的最后一次提交。 (具体如何操作,可以参考上一节) - 需要把本地的修改push 到远程仓库
$ git push origin -f master
这样最后一次commit
的修改就应用到远程仓库了.
tips:
1,其中 -f
是 --force
的缩写
2,master 分支不建议使用 -f
参数,因为团队开发很容易删除其他同事的提交。(可以在分支上使用)
问题:
如果发现提交错误的commit
不是最后一次,而是在倒数第二次的位置上,应该如果处理呢?
END!