commit未push到origin(远端)
现在最新的commit如图所示,添加了一行输出代码,只提交到了本地仓库,没有push到远端。现在我觉得这个commit不好,我想修改一下,但是又不想再弄一个commit,例如加一行代码注释,或者修改一下commit的描述。
例如,我现在加了一行代码注释:
的确,我直接提交这次修改的代码不会有任何问题,但是我就是有强迫症,耶稣也拦不住我,我不想再提交一次,我想修改上次的commit,使用我的修改代码。
我们可以使用如下git命令修改:
git add SayByeBye.java //暂存修改的文件
git commit --amend //修改刚刚的提交
当输入第二条命令时会进入如下界面:
此时我们是在修改上次的commit,我们顺便修改一下上次的commit的描述,保存退出后可以发现上次的commit被修改了。
有时候强迫症犯了拦都拦不住,我仅仅觉得刚刚的commit描述没写好,可以直接使用
git commit --amend //修改刚刚的提交
这个命令会直接进入修改界面,直接修改描述即可。
Tip
以上的方法看起来真是头晕眼花,如果你用的是sourcetree的话就会方便很多。
在sourcetree提交页面有上图修改最后一次提交
选项,当选择这个选项并点击提交就可以自动修改上次没有被push到远端的提交。
commit被push到origin(远端)
有时候手快拦都拦不住,习惯性commit后立马push到远端。push到远端后发现不行,需要修改一下刚刚已经push到远端的commit(注:可以在本地修改后push到远端,我们要做的是不生成新的commit)。
如上图所示,我们的commit现在被push到远端了,我现在想换个类编辑并修改一下commit的描述。我们可以直接修改代码后使用如下命令:
git add SayByeBye.java //暂存修改的文件
git commit --amend //修改刚刚的提交
git push origin feature/1.0 -f //强制推送,有可能远端设置了不允许强制推送,此时push的commit就真不能改了
输入git commit --amend
后进入以下界面
保存描述后会发现变成提交历史如下:
会发现我们这次的修改是基于上图黑框框处的commit的修改的,不要忘了我们的目的,此时我们是想让feature/1.0覆盖掉origin/feature/1.0,下一步的git push origin feature/1.0 -f
就起到了这个作用。运行完后如下:
可以发现刚刚push到远端的commit被我们又加了一个类的修改并修改了commit的描述。