git的HEAD指針操作


學習操作HEAD指針,具體如下:

- 查看Git版本信息

- 移動指針

- 通過移動HEAD指針恢復數據

- 合並版本

拓撲圖:

方案: HEAD指針是一個可以在任何分支和版本移動的指針,通過移動指針我們可以將數據還原至任何版本。

每做一次提交操作都會導致git更新一個版本,HEAD指針也跟着自動移動

1. 對數據倉庫進行一些修改、提交操作,以產生多個版本,為后面的驗證做准備

    [root@web2 ~]# git clone root@192.168.2.100:/var/git/project

    [root@web2 ~]# cd project

    [root@web2 project]# git pull

    [root@web2 project]# git status

    [root@web2 project]# echo "new file" > new.txt   #寫入數據

    [root@web2 project]# git add .

    [root@web2 project]# git commit -m "add new.txt"

    [root@web2 project]# echo "first" >> new.txt     #寫入數據

    [root@web2 project]# git add .

    [root@web2 project]# git commit -m "new.txt:first line"

    [root@web2 project]# echo "second" >> new.txt     #寫入數據

    [root@web2 project]# git add .

    [root@web2 project]# git commit -m "new.txt:second"

    [root@web2 project]# echo "123" > num.txt    #寫入數據

    [root@web2 project]# git add .

    [root@web2 project]# git commit -m "num.txt:123"

    ......

2. 查看Git版本信息

    [root@web2 project]# git reflog

    [root@web2 project]# git log --oneline     #查看Git版本信息

    04ddc0f num.txt:789   

    7bba57b num.txt:456

    301c090 num.txt:123

    b427164 new.txt:third

    0584949 new.txt:second

    ece2dfd new.txt:first line

    e1112ac add new.txt

3. 移動HEAD指針,將數據還原到任意版本. 提示,當前HEAD指針為HEAD@{0}

    [root@web2 project]# git reset --hard 301c0     #恢復到版本301c0

    [root@web2 project]# git reflog

    301c090 HEAD@{0}: reset: moving to 301c0

    04ddc0f HEAD@{1}: commit: num.txt:789

    7bba57b HEAD@{2}: commit: num.txt:456

    301c090 HEAD@{3}: commit: num.txt:123

    b427164 HEAD@{5}: commit: new.txt:third

    0584949 HEAD@{6}: commit: new.txt:second

    ece2dfd HEAD@{7}: commit: new.txt:first line

    e1112ac HEAD@{8}: commit: add new.txt

    1a0d908 HEAD@{9}: commit (initial): 初始化

    [root@web2 project]# cat num.txt       #查看文件是否為123

    123

    [root@web2 project]# git reset --hard 7bba57b

    [root@web2 project]# cat num.txt        #查看文件是否為123,456

    123

    456

    [root@web2 project]# git reflog       #查看指針移動歷史

    7bba57b HEAD@{0}: reset: moving to 7bba57b

    301c090 HEAD@{1}: reset: moving to 301c0

    ...

    [root@web2 project]# git reset --hard 04ddc0f    #恢復num.txt的所有數據

4. 模擬誤刪后的數據還原操作

    [root@web2 project]# git rm init.txt     

    rm 'init.txt'      #刪除文件

    [root@web2 project]# git commit -m "delete init.txt"    #提交本地倉庫

    [root@web2 project]# git reflog      #查看版本歷史

    0dc2b76 HEAD@{0}: commit: delete init.txt    #有刪除init.txt的記錄

    7bba57b HEAD@{0}: reset: moving to 7bba57b

    301c090 HEAD@{1}: reset: moving to 301c0

    ...

    [root@web2 project]# git reset --hard 04ddc0f            #恢復數據

    [root@web2 project]# ls

    demo init.txt new.txt num.txt

結束.

 


免責聲明!

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



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