作为一个基本上只会push和pull的还依赖于SourceTree的git弱渣,随手记录一下自己使用过的git命令,让自己以后找起来更方便🙄
修正最后一个 commit 消息
场景:你在最后一条 commit 消息里有个笔误,已经执行了
git commit -m "Fxies bug #42",但在
git push
之前你意识到消息应该是 “Fixes bug #42″。方法:
git commit --amend
或git commit --amend -m "Fixes bug #42"
原理:
git commit --amend
会用一个新的 commit 更新并替换最近的 commit ,这个新的 commit 会把任何修改内容和上一个 commit 的内容结合起来。如果当前没有提出任何修改,这个操作就只会把上次的 commit 消息重写一遍。撤销最后一个commit
场景:在完成了一次本地commit之后,对这次commit不是十分满意,想要撤销这条commit记录
方法:
git reset <last good SHA>
或git reset --hard <last good SHA>
原理:
git reset
会把你的代码库历史返回到指定的 SHA 状态。 这样就像是这些提交从来没有发生过。缺省情况下,撤销的commit的修改的代码将会恢复到工作区,对应的commit的记录被撤销掉。如果加了--hard
,那么撤销的commit的代码也会消失掉。如果想一并撤销远端的提交,使用git push origin master --force
或者git push -f origin master
即可,sourceTree里也有开启force push的选项。
参考:Force “git push” to overwrite remote files
合并远端新建的的分支
合并多次commit
场景:将多次提交的commit合并为一次提交。
方法: