Git歷史版本穿梭(涉及GitHub相關操作)

2021-06-21 21:39:34 字數 1889 閱讀 6470

本篇博文主要說明兩個問題:

1、  git作為版本控制系統,那麼他就應該具備在各次提交之間穿梭的能力,這裡首先就先說恢復到歷史提交的方法,也就是roll back的能力。

2、  滾到歷史提交我又想回來怎麼辦?第二就說這個問題。

3、  深化說明在1中使用到的命令。1、

首先,看一下版本庫中的分支游標master的內容:

也就是最新commit 的id。

下面的.git 目錄下的head就是是master的乙個指向。

既然要回滾,就要知道想要回到的commit的id,通過:

git log –oneline簡化顯示:

所謂的回滾其實就是將分支游標master指向之前的提交,重置命令git reset 上場:

git reset --hard commit-id

即可。2、

繼續問題2,滾到歷史提交又想回來的問題。

首先問題出來了,回去的話你得有commit id才行啊,可是經過上面的步驟你在執行git log的話只能找到回滾到的commit以及之前的記錄。

這是.git目錄下的另乙個目錄可以隆重登場了,看logs目錄:

這個就是提交的歷史記錄,由於我並未執行git reset,所以你看見的記錄最新commit id和master所指向的一致。

上恢復重置的命令 git reflog:

先用這個命令看看前四次log記錄:

使用git reset重置到master@:

檢視當前commit 記錄,重置成功:

現在我要回到重置之前的狀態,首先找到重置前的master指向的commit的id:

然後執行重置:

補充:若你的提交已經push到了遠端庫中,重置後的master指向若和遠端庫中不一致,那麼會阻止push。以github為例,出現下面:

這時你只能強制push:

這種操作在多人協同的庫中謹慎使用。

3、git reset高階。

git reset --hard --- 執行123,即將master、暫存區、工作區全部重置

git reset --soft --- 只執行1,也就是指修改引用的指向,不修改暫存區、工作區

git reset --mixsd (git reset ) --- 執行12

注:不寫的話預設為head,head^指head的父提交,否則都是用master@表示。

Git時光穿梭(版本退回)。。。

1 git status 檢視倉庫當前的狀態 2 git diff test.txt 檢視對檔案test進行了什麼操作 3 git add test.txt 將修改後的檔案新增到暫存區 4 git commit m 注釋 將暫存區的內容提交到git倉庫 5 git log 檢視檔案每次更改的歷史記錄...

git 版本歷史

版本 git rev parse git dir顯示git版本庫的位置 show cdup顯示當前工作區目錄的深度 parseopt解析命令列引數 git rev parse symbolic branches 顯示分支 git rev parse symbolic tags 顯示里程碑 git r...

git 版本歷史

版本 git rev parse git dir顯示git版本庫的位置 show cdup顯示當前工作區目錄的深度 parseopt解析命令列引數 git rev parse symbolic branches 顯示分支 git rev parse symbolic tags 顯示里程碑 git r...