1.git revert和git reset的區別
git revert
是撤銷某次操作,此次操作之前或之後的commit都會被保留
git reset
是撤銷某次提交,此次之後的修改都會被退回到暫存區
例子,有三個commit, git log:
commit3: #3 xxid_3
commit2: #2 xxid_2
commit1: #1 xxid_1
執行 git revert xxid_2
之後:
commit2被撤銷了,但是commit1和commit3還存在
執行 git reset --soft xxid_2
之後:
commit3被撤銷了,commit1和commit2還存在,commit3 出現在暫存區
執行 git reset --hard xxid_2
之後:
commit3被撤銷了,commit1和commit2還存在,commit3徹底消失
2.git reset –soft/–mixed/–hard
git reset -soft :取消了commit
git reset -mixed(默認) :取消了commit ,取消了add
git reset -hard :取消了commit ,取消了add,取消源文件修改
git reset –hard HEAD~3 會將最新的3次提交全部重置,就像沒有提交過一樣。
git reset –hard commit_xxid 回退到 commit_xxid版本
git push origin HEAD --force 然後推送到遠程倉庫
3.將原來多次的git提交記錄合併爲一個
通過git reset –soft commit_xxid的方法,可以將原來多次的git提交記錄合併爲一個。