reset
reset命令把當(dāng)前分支指向另一個(gè)位置,并且相應(yīng)的變動(dòng)工作目錄和索引。如下圖,執(zhí)行g(shù)it reset HEAD~3后,當(dāng)前分支相當(dāng)于回滾了3個(gè)提交點(diǎn),由ed489回到了b325c:
reset有3種常用的模式:
–soft,只改變提交點(diǎn),暫存區(qū)和工作目錄的內(nèi)容都不改變
–mixed,改變提交點(diǎn),同時(shí)改變暫存區(qū)的內(nèi)容。這是默認(rèn)的回滾方式
–hard,暫存區(qū)、工作目錄的內(nèi)容都會被修改到與提交點(diǎn)完全一致的狀態(tài)
diff
我們在commit、merge、rebase、打patch之前,通常都需要看看這次提交都干了些什么,于是diff命令派上用場了:
來比較下上圖中5種不同的diff方式:
比較不同的提交點(diǎn)之間的異同,用git diff 提交點(diǎn)1 提交點(diǎn)2
比較當(dāng)前分支與其他分支的異同,用git diff 其他分支名稱
在當(dāng)前分支內(nèi)部進(jìn)行比較,比較新提交點(diǎn)與當(dāng)前工作目錄,用git diff HEAD
在當(dāng)前分支內(nèi)部進(jìn)行比較,比較新提交點(diǎn)與暫存區(qū)的內(nèi)容,用git diff --cached
在當(dāng)前分支內(nèi)部進(jìn)行比較,比較暫存區(qū)與當(dāng)前工作目錄,用git diff
看起來有點(diǎn)復(fù)雜?是的,記不住的時(shí)候看看這些圖吧。