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