高级 7:reset 的本质——不止可以撤销提交
前面讲到,在最新的 commit 写错时,可以用 reset --hard 来把 commit 撤销:
git reset --hard HEAD^
用这行代码可以撤销掉当前 commit
在这节里,就对 reset 多说点,说说它的本质,说说它在撤销提交之外的用途。
reset 的本质:移动 HEAD 以及它所指向的 branch
实质上,reset 这个指令虽然可以用来撤销 commit ,但它的实质行为并不是撤销,而是移动 HEAD ,并且「捎带」上 HEAD 所指向的 branch(如果有的话)。也就是说,reset 这个指令的行为其实和它的字面意思 “reset”(重置)十分相符:它是用来重置 HEAD 以及它所指向的 branch 的位置的。
而 reset --hard HEAD^ 之所以起到了撤销 commit 的效果,是因为它把 HEAD 和它所指向的 bra