git checkout切換到指定commit

切換分支是 git checkout 最常見的功能,這里不做介紹,今天主要介紹下它在撤銷文件改動(dòng)上的應(yīng)用。
// 放棄單個(gè)文件修改,注意不要忘記中間的"--",不寫就成了檢出分支了git checkout -- filepathname// 放棄所有的文件修改git checkout .
此命令用來放棄掉所有還沒有加入到緩存區(qū)(就是 git add 命令)的修改。但是此命令不會(huì)刪除掉剛新建的文件。因?yàn)閯傂陆ǖ奈募€沒已有加入到 git 的管理系統(tǒng)中。所以對(duì)于git是未知的。自己手動(dòng)刪除就好了。
git checkout 切換到指定 commit:
git chekcout HEAD 是一個(gè)指針,通常情況下,它指向當(dāng)前所在分支,而分支又指向一個(gè) commit 提交。HEAD 并不總指向一個(gè)分支,某些時(shí)候僅指向某個(gè) commit 提交,這就形成 detached HEAD。
切換到 detached HEAD 狀態(tài)時(shí),會(huì)有一個(gè)警告。

提示我們可以任意的修改和提交,通過切換回分支時(shí)不影響任何分支的狀態(tài)。
在你沒切走之前,可以創(chuàng)建一個(gè)新分支來保留所創(chuàng)建的提交,則可以通過在 switch 命令中使用 -c 來執(zhí)行此操作:
git switch -c 如果你沒有執(zhí)行上面的命令,當(dāng)你切走之后,會(huì)有一個(gè)警告。

在 detached HEAD 狀態(tài)下開發(fā)新的 feature,將沒有任何辦法引用到這個(gè) feature。你可以把 detached HEAD 狀態(tài)看作是正在一個(gè)未命名的分支上。你只需要給這個(gè)分支命名就可以使用這個(gè) feature 了,然后就可以把這個(gè)新分支上的代碼合并到其他分支上了,通過命令:
git branch 588f5c0 假設(shè)你正在進(jìn)行一次瘋狂的重構(gòu),但現(xiàn)在你不確定是否要繼續(xù)下去。這時(shí)你想要看一下開始這次重構(gòu)之前項(xiàng)目原來的樣子,首先你需要查看版本的ID,然后使用 git checkout 切換到這個(gè)之前的版本。
git checkout a1e8fb5這讓你的工作區(qū)切換到了 a1e8fb5 comimit 的狀態(tài)。你可以查看文件、編譯項(xiàng)目、運(yùn)行測(cè)試用例,甚至編輯文件,完全不用擔(dān)心丟失項(xiàng)目“當(dāng)前”的狀態(tài),你在這里做的所有修改都不會(huì)被保存到項(xiàng)目中。當(dāng)你想要繼續(xù)那次瘋狂的重構(gòu)時(shí),你需要回到項(xiàng)目的“當(dāng)前”狀態(tài)。
git checkout master