天天看點

git reset 和 git revert 差別

官方文檔:git reset、git revert

最大的差別是git reset是将HEAD指向指定的之前的送出,而git revert是将HEAD指向一個去除了指定送出的新的送出。(即git reset是将HEAD移向過去,git revert是将HEAD移向未來)

再就是git reset 預設隻将HEAD和Index重置,工作目錄是不重置的,而git revert由于是新增了一次送出是以三者都還原了。(注意:git revert是可能産生沖突的,例如當先進行的送出A和後進行的送出B均對同一檔案作出修改,而此時還原送出A就會提示沖突)

此外,對于git reset指令的 --hard标記,這是一個比較危險的操作,因為未暫存的更改會立即丢失,而那些被重置的送出也隻能用git reflog來找回了;而對于git revert指令,若想要恢複被還原的送出,隻需像“負負得正”一樣将已還原的送出再次還原。(笑)

對于git reset的官方了解:重置揭密

對于git revert的官方了解:進階合并

個人了解可能存在不足,請多指教,謝謝