中英網(wǎng)站建立百度關鍵詞排名用什么軟件
git revert
會生成一個新的 commit 來記錄此次操作;git reset
是把 HEAD 指針向前挪動一次,會減少一個 commit。
回退用 git revert
回退還是用 git reset
,核心就一點:
是否需要記錄這次回退。
如果需要記錄這次回退,就用 git revert
,反之用 git reset
。
而是否需要,在遵循 git 基本原則的前提下,也有一些經(jīng)驗之談。
公共分支的回退一般用 git revert
因為如果用 git reset
, 后面推送到遠程倉庫需要強制 push 來修改歷史提交記錄,但是 git 的一般原則是不要破壞公共分支的歷史提交記錄,故公共分支上的回退一般用 git revert
。還有就是,對公共分支的修改,本來就應該記錄。最后一點就是,如果用 git reset 修改了公共分支的歷史提交記錄,其他同事都將不得不使用 git reset --hard origin/publicBranch
命令來將遠程倉庫代碼同步到本地,這很蛋疼,因為本地未提交的代碼都會被抹除。
非公共分支的回退一般用 git reset
就我平時的開發(fā)而言,在個人的分支上回退,git reset
更合適。比如你剛提交完一次代碼,突然發(fā)現(xiàn)里面有句注釋有錯別字,你想修改,這個時候就可以直接用 git reset HEAD^
將上一次提交的代碼回退到工作區(qū),修改錯別字后重新提交。這種情況下就很適合 git reset
,因為沒有多余的記錄,并且也不需要記錄,你以及你的同事都不 care “修改錯別字” 這一條記錄。