這裏的教程是關於Windows 上的 Git GUI
在使用 Git 管理自己的代碼和資料時,難免會遇到意料之外的事。比如誤操作,將當前的分支刪除;或者重置到某個版本,然後發現自己想要的代碼找不到了;又或者需要還原到之前提交的某個版本,但是那個版本已經被重置過,在歷史中找不到了。
忙活了大半天,發現辛苦換來的成果都沒了,遇到這種情況幾乎是要崩潰的,不過幸好我們還有 Git。
一般情況下,如果在版本的分支歷史上,還可以找到想要的那個版本,那通常比較簡單,只要選擇重置到該版本就可以了。
重置類型有三種模式可供選擇,soft、mixed 和 hard 的區別如下:
soft 不改動工作區和索引
假設有一些 commits
A - B - C (master)
HEAD 指向 C, 並且暫存區(stage,或稱爲 index)matches C.
當使用 git
reset --soft B
時,master 和 HEAD 指向 B,但是依然保留了 C 添加跟蹤的文件,此時會將這些文件放入暫存區中,顯示爲已緩存。同時工作區中修改的文件,顯示爲未緩存。
mixed 保持工作區不變,重置索引
當使用 git
reset --mixed B
時,master 和 HEAD 指向 B,這時候 C 添加跟蹤的文件仍然會在,但是會顯示爲未緩存(不是版本控制),而當前工作目錄中的修改內容,仍然會在,顯示未緩存的狀態
(如果不知道怎麼選,默認使用 mixed)
hard 重置索引和工作區(丟棄所有本地變更)
當使用 git
reset --hard B
時,C 添加跟蹤的文件,以及當前工作目錄中的修改內容,都會丟失。
如果比較悲劇,分支歷史上已經找不到想要的那個版本的代碼了,但是別急,只要是有提交的代碼,Git 都能找回來。
我在 Windows 下使用 TortoiseGit,只要右鍵找到顯示引用記錄
,就能找到所有的操作記錄,然後選擇想要的版本,重置過去就可以了。即便是現在這一步的重置操作選錯了版本也沒事,因爲這個操作也被記錄下來,你還是可以重置到正確的版本。
看到這張圖,是不是一股暖流涌上心頭,終於找回來了。
曾經嘗試過用命令來操作,但是試了很久都沒成功,只好放棄,改用 TortoiseGit 來操作。TortoiseGit 在 Windows 下幾乎是最好用的 Git GUI 工具了。
自從使用了 Git,只要有 commit
過的代碼,再也不擔心會丟了,盡情的 commit
吧。