4.git的版本回退和比較

1.上一節已經說明了提交的命令,現在瞭解回退

 

2.回退分多種情況,

    a>.文件已經提交到庫了,需要回退到上一個版本,或(上上上個版本)

    1.通過命令git reset HEAD~回退到上一個版本到暫存區(每多一個~,就往上加一個版本,也可以用~5,就是往上第5個版本(或者用~~~~~);

    2.此時你可以通過git add. 重新添加;或者通過checkout 讓工作區也回退過去;

    3.git reset 後面有三個選項,--fixed(默認)回退到暫存區,指針指向下一個版本;--soft:只是將庫中的指針改成指向上一個版本;--hard:直接回退版本到工作區,指針指向下一個版本;

    4.如果版本比較多,回滾也可以直接通過執行提交的hashID(前7位即可)來回滾;git reset aaaaadas;

    5.回滾個別文件到指定版本,可以用 git reset ID filename, 此時指針不指向下一個版本;

    6.回滾不止可以向前,也可以向後滾,通過ID還原回去,git reset ID即可;如果想讓工作區都直接還原,在ID前面加上--hard

    7.如果已經不記得回滾之前的ID的話,可以通過git fsck --lost-found找到丟失的,然後通過git show查看丟失是要回復到哪個版本,最後通過6回滾;

 

    b>.文件提交到暫存區,需要回退到暫存區的上一個版本; 

        git checkout -- filename;(這裏加上--主要是預防你有一個filename的分支,如果你確定沒有,是可以不需要--的)

    c>.如果用git checkout head~ filename ,將會從庫中回滾文件到暫存區和工作目錄;

        

 

3.比較 git diff 是比較的工作目錄和暫存區的文件;   

    A>. --cached [版本ID] 比較暫存區域和庫中的文件;

    B>. git diff [版本1】 【版本2】 比較兩個歷史版本ID;

    C>. git diff [版本ID] 比較工作目錄和庫的文件;

    

4.如果commit 後發現更新的文件還有沒寫好,則用 git commit --amend -m "增加說明",這樣庫中不會增加版本;

 

5.git rm file刪除文件;

 

6.git mv file file1 重命名;

 

7.reset 和 checkout的區別;

    reset:默認只是將文件覆蓋到暫存區;如果reset後面跟的是文件名,那麼不能加--soft 和 --hard的;不過什麼狀態都可以執行;會移動HEAD所在分支的指向

    checkout:默認是覆蓋暫存區和工作區;更安全,如果git status顯示的不是clean的話,不允許執行的;只會移動HEAD自身指向另一個分支;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章