例如我們有一次commit不是不是很滿意衫仑,需要回到上一次的Commit里面。那么這個時候就需要通過reset堕花,把HEAD指針指向上一次的commit的點文狱。
它有三種模式,soft,mixed,hard缘挽,具體的使用方法下面這張圖瞄崇,展示的很全面了呻粹。
一
reset --hard:重置stage區(qū)和工作目錄:
reset --hard 會在重置 HEAD 和branch的同時,重置stage區(qū)和工作目錄里的內(nèi)容苏研。當你在 reset 后面加了 --hard 參數(shù)時等浊,你的stage區(qū)和工作目錄里的內(nèi)容會被完全重置為和HEAD的新位置相同的內(nèi)容。換句話說摹蘑,就是你的沒有commit的修改會被全部擦掉筹燕。
簡單的看,--hard就是完全替換為reset的版本信息衅鹿,你工作區(qū)和暫存區(qū)也全部同步為reset版本相同的內(nèi)容
二
reset --soft:保留工作目錄撒踪,并把重置 HEAD 所帶來的新的差異放進暫存區(qū)。reset --soft 會在重置 HEAD 和 branch 時大渤,保留工作目錄和暫存區(qū)中的內(nèi)容制妄,并把重置 HEAD 所帶來的新的差異放進暫存區(qū)。
簡單來看泵三,也就是說--soft命令是撤銷指定版本內(nèi)容的那一次commit(并放進stage/暫存區(qū))耕捞,其他的東西都不改變。
三
reset 不加參數(shù)(--mixed):保留工作目錄烫幕,并清空暫存區(qū)
reset 如果不加參數(shù)俺抽,那么默認使用 --mixed 參數(shù)。它的行為是:保留工作目錄纬霞,并且清空暫存區(qū)凌埂。也就是說,工作目錄的修改诗芜、暫存區(qū)的內(nèi)容以及由 reset 所導(dǎo)致的新的文件差異瞳抓,都會被放進工作目錄。簡而言之伏恐,就是「把所有差異都混合(mixed)放在工作目錄中」孩哑。工作目錄的內(nèi)容和 --soft 一樣會被保留,但和 --soft 的區(qū)別在于翠桦,它會把暫存區(qū)清空,并把原節(jié)點和reset節(jié)點的差異的文件放在工作目錄横蜒,總而言之就是,工作目錄的修改销凑、暫存區(qū)的內(nèi)容以及由 reset 所導(dǎo)致的新的文件差異丛晌,都會被放進工作目錄
簡單的看,也就是說--mixed命令是撤銷指定版本內(nèi)容的那一次commit(并放進work/工作區(qū))斗幼,暫存區(qū)的修改也會清空澎蛛,同時放到工作區(qū)。