首先明白一下基本概念和用法,這段話是從前在看廖雪峯的git教程的時候摘到OneNote的git

準備工做:bash
- 新建了一個learngit文件夾,在bash中cd進入文件夾,用如下命令建立一個倉庫。
- 添加一個文本文件one.txt,裏面寫個內容 "one"。準備工做完成。文件夾狀況以下:

實驗開始:spa
實驗一:沒有add,沒有commit
- 此時不對文件作任何提交,用git status 查看一下文件狀態:

說明是徹底沒有 git add 的code
- 進入文件夾,把文本文件 one.txt 中的內容加一行 「Two」。
- 回到bash窗口,嘗試用 git checkout -- file 命令恢復狀態,結果報錯:

說明沒有add,還想checkout,沒有什麼意義可言,由於既不在暫存區,也沒有提交,因此就沒有所謂的恢復blog
實驗二:有add,但不commit

- 進入文件夾,把文本文件 one.txt 中的內容加一行 「Two」。
- 回到bash窗口,嘗試用 git checkout -- file 命令恢復狀態,啥也沒報。Unix哲學是沒有狀況就是好狀況。
- 打開 one.txt ,發現添加的那一行沒了,內容中又只剩下 "One"
實驗三:add又commit
- 確認一下:如今文本文件中內容是一行 "One",由於以前已經 add 過了,因此先用以下命令讓狀態恢復到連 add 也沒有過的時候
效果會是這樣的:教程

好,又恢復到了沒有add的狀況。get
- 而後咱們從頭開始 - -。。。其實我也不知道爲啥要這樣,感受和前面步驟相同比較好一點。。
- 用 git add 添加,而後用 git commit 提交,結果以下:成功提交

這時候,文本文件中只有一行"One",it
- 進入文件夾,把文本文件 one.txt 中的內容加一行 「Two」。出現以下界面(說明修改過了)

- 回到bash窗口,嘗試用 git checkout -- file 命令恢復狀態,啥也沒報。Unix哲學是沒有狀況就是好狀況。
- 打開 one.txt ,發現添加的那一行沒了,內容中又只剩下 "One"
結論:必需要先add才存在恢復一說。 checkout 能夠理解爲「切回某個文件」的意思。可是要注意,這個命令是對工做區生效的。class