git revert和git reset的區別

時間 2022-08-19 22:52:21

1樓:追憶小土豆

git中,每一次提交都會生成乙個commit

git revert會生成乙個新的commit,將之前的某個commit的修改恢復過來

git reset會將head移動到某個commit上,換種說法就是將某個commit變成最後乙個commit

譬如現在有a,b,c三個commit

執行git revert c的話,會生成commit d,當前code的內容會變成和b一樣

執行git reset b --hard的話,會在當前的工作目錄中將c丟棄掉,內容變成和b一樣

從內容上來看,這兩種做法是一樣的;但從commit的歷史來看,是不同的

2樓:匿名使用者

git revert 是生成乙個新的提交來撤銷某次提交,此次提交之前的commit都會被保留

git reset 是回到某次提交,提交及之前的commit都會被保留,但是此次之後的修改都會被退回到暫存區

具體乙個例子,假設有三個commit, git st:

commit3: add test3.c

commit2: add test2.c

commit1: add test1.c

當執行git revert head~1時, commit2被撤銷了

git log可以看到:

revert "commit2":this reverts commit 5fe21s2...

commit3: add test3.c

commit2: add test2.c

commit1: add test1.c

git status 沒有任何變化

如果換做執行git reset --soft(預設) head~1後,執行git log

commit2: add test2.c

commit1: add test1.c

執行git status, 則test3.c處於暫存區,準備提交。

如果換做執行git reset --hard head~1後,

顯示:head is now at commit2,執行git log

commit2: add test2.c

commit1: add test1.c

執行git st, 沒有任何變化

另外:git revert 是撤消該commit,作為乙個新的commit。

人類的大腦皮層中有言語區 w區 v區 s區和h區 它們分別對應的語言功能是

據分析可知,w區為書寫中樞,v區為視覺性語言中樞,s區為說話中樞,h區為聽覺性語言中樞 故人類的大腦皮層中有四個言語區 w區 v區 s區和h區分別對應的語言功能是寫字 閱讀 說話 聽 故選 b 臨床發現,損傷大腦皮層 前回底部的s區,病人可以看懂文字和聽懂別人談話,但自己卻不會講話,則該區域為 語言...

timestamp和datetime的區別

1.儲存空間不同 a timestamp占用4個位元組 b datetime占用8個位元組 2.受時區影響 c timestamp實際記錄的是1970 01 01 00 00 01到現在的數數,受時區影響 d datetime不受時區影響 3.時間範圍不同 e timestamp的時間範圍是 197...

jqueryforeach和each的區別

jquert沒有foreach foreach是原生js的方法,針對陣列,foreach value,index,arr each是jq的方法,針對jq物件,each index,value 注意兩者第一二個引數是位置顛倒的 jquery裡沒有foreach的函式 jquery裡面的each 是什麼...

since和for,as,because的區別是什麼

becaue since as和for表達原因時的區分 because,since,as和for的區別 because since as for這四個詞都是表示原因或理由的連線詞,但是as,because,since是從屬連詞,引導原因狀語從句,for是並列連詞,所引導的不是原因狀語從句,而是表示理...

neither nor和both and的區別

both and.意為 兩者 兩個 雙方 謂語動詞用複數 both john and ann are good at french.either.or.或者.或者.不是.就是.he is either a doctor or a teacher.注意 連線兩個並列主語是,謂語動詞與其靠近的主語一致....