git reset/revert 就是程序員的后悔藥墩瞳。主要總結(jié)了reset,懂了reset自然就懂了revert(更安全的reset氏豌,后悔藥的后悔藥)矗烛,但是git reset 會有更干凈的commit路徑。
常用格式
-
git reset [option] [commit]
//重制指定提交箩溃,可以具體指定到文件瞭吃,否則就是所有文件。
# 重置前一次提交的filename.java涣旨,會丟棄所有修改沒有任何保留歪架。
git reset --hard head^ filename.java
-
git reset head [file list]
// 重制為當(dāng)前提交,一般用于重制暫存區(qū)到工作區(qū)霹陡。 -
git reset head^
// 重制到當(dāng)前提交的前次提交 -
git reset head~n
// 重制到當(dāng)前提交的前n此提交和蚪,即在這次提交之后提交都刪除, head^ 相當(dāng)于head~1 -
git reset [commit-hash/tag name]
// 可以指定提交的hash值或者tag名
選項詳解
options: 如果會把重置的內(nèi)容放到哪個位置,哪個位置就不能有和重置內(nèi)容相同的文件烹棉。
--mixed
// 重置提交和暫存區(qū)攒霹,即所有被重置的提交(和暫存區(qū))的修改都放到工作區(qū), 默認(rèn)選項。在可能情況下不會影響工作區(qū)原有內(nèi)容浆洗。--soft
// 重置提交, 即被重置的提交的修改放到暫存區(qū)催束。在可能情況下不會影響暫存區(qū)和工作區(qū)原有內(nèi)容。--hard
// 重置提交, 暫存區(qū)伏社,工作區(qū)抠刺。將丟失所有被重置的修改。--merge
// 保留工作區(qū)摘昌,直接丟棄暫存區(qū)的修改速妖,丟棄所有重置的提交 。聪黎。--keep
// 保留工作區(qū)罕容,把暫存區(qū)的內(nèi)容放到工作區(qū)(兩個區(qū)中不能有相同的文件),丟棄所有重置的提交稿饰。