Git 基礎再學習之:git checkout -- file


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

 

准備工作:

  • 新建了一個learngit文件夾,在bash中cd進入文件夾,用以下命令創建一個倉庫。
$ git init
  • 添加一個文本文件one.txt,里面寫個內容 "one"。准備工作完成。文件夾情況如下:

   

 

 

實驗開始:

實驗一:沒有add,沒有commit

  • 此時不對文件做任何提交,用git status 查看一下文件狀態:

    

    說明是完全沒有 git add 的

  • 進入文件夾,把文本文件 one.txt 中的內容加一行 “Two”。
  • 回到bash窗口,嘗試用 git checkout -- file 命令恢復狀態,結果報錯:

    

    說明沒有add,還想checkout,沒有什么意義可言,因為既不在暫存區,也沒有提交,所以就沒有所謂的恢復

 

實驗二:有add,但不commit

  • 用 git add 把 文本文件添加到暫存區:

    

  • 進入文件夾,把文本文件 one.txt 中的內容加一行 “Two”。
  • 回到bash窗口,嘗試用 git checkout -- file 命令恢復狀態,啥也沒報。Unix哲學是沒有情況就是好情況。
  • 打開 one.txt ,發現添加的那一行沒了,內容中又只剩下 "One"

 

實驗三:add又commit

  • 確認一下:現在文本文件中內容是一行 "One",因為之前已經 add 過了,所以先用如下命令讓狀態恢復到連 add 也沒有過的時候
git rm --cached one.txt

    效果會是這樣的:

    

    好,又恢復到了沒有add的情況。

  • 然后我們從頭開始 - -。。。其實我也不知道為啥要這樣,感覺和前面步驟相同比較好一點。。
  • 用 git add 添加,然后用 git commit 提交,結果如下:成功提交

    

   這時候,文本文件中只有一行"One",

  • 進入文件夾,把文本文件 one.txt 中的內容加一行 “Two”。出現如下界面(說明修改過了)

    

  • 回到bash窗口,嘗試用 git checkout -- file 命令恢復狀態,啥也沒報。Unix哲學是沒有情況就是好情況。
  • 打開 one.txt ,發現添加的那一行沒了,內容中又只剩下 "One"

結論:必須要先add才存在恢復一說。 checkout 可以理解為“切回某個文件”的意思。但是要注意,這個命令是對工作區生效的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM