Git 常用回滾撤銷命令總結

2021-10-18 15:21:13 字數 2989 閱讀 1410

git 乙個開源的分布式版本控制系統,最常用於**開發過程中版本控制

這裡簡單總結記錄一下git常用命令,最主要是由於某些原因提交錯誤要進行回滾撤銷操作。

版本回滾撤銷

你電腦上的本地目錄,該目錄中存放著將要或者已經被git所管理的專案檔案

英文叫stageindex。一般存放在工作區.git目錄下的 index 二進位制檔案(.git/index)中,所以我們把暫存區有時也叫作索引(index)。

工作區有乙個隱藏目錄.git,這個是 git 的版本庫。

一般伺服器上(如:github或者自己搭建的gitlab)會存在乙個專案檔案的版本庫,伺服器上的版本庫就叫遠端版本庫。

git pull 命令

從遠端的版本庫clone 拉取檔案到本地版本庫

git push 命令

從本地版本庫推送更新的檔案到遠端版本庫,達到本地和遠端檔案一致

一般採用 git log 命令檢視如下內容:

這裡面的 head origin是什麼意思?

可以將 head 看做當前工作區檔案所屬的是哪乙個分支

指的就是遠端倉庫

上面圖中 git log 後的第一條資訊:

commit a3bc6e672da90112565e76b50474e2b09ab99a99 (head -> master, origin/master, origin/head)
表示 當前本地電腦上的檔案歸屬 master 分支(head -> master), 本次commit後也推送到了遠端master上

使用 git status 檢視當前工作區狀態

$ git checkout -- aaa.txt  # 丟棄檔案 aaa.txt的修改

$ git checkout -- . # 丟棄全部沒有提交的檔案的修改

注意:該命令將丟棄檔案的全部修改,回到和遠端伺服器上版本一致

$ git reset head  aaa.txt    # 取消暫存,將檔案重置回場景1

$ git reset head . # 取消剛剛add的所有檔案的暫存,將檔案重置回場景1

該命令不會丟棄檔案的修改,如果你還想丟棄這兩個檔案的全部修改,參考 場景1的方法

使用 git log 命令可以發現,當前本地版本庫的版本要高於遠端版本,也就是說已經commit了但沒有push,此時可以採用下面的命令回滾本地倉庫。

$ git reset --hard # 回到其中你想要的某個版
可以使用 git log 命令檢視每一次提交的資訊

注意:例如上圖,commit_id 應該是 「測試提交1」的commitid

$ git reset --hard # 回到其中你想要的某個版

$ git push origin head --force # 強制提交遠端 此時本地遠端倉庫版本一致,一併回退到

針對場景3 :

如果此時又返回剛剛的回退版本操作,想還是恢復剛剛的操作怎麼辦?

採用 git reflog 檢視所有的git操作命令日誌

看到 head@ head@ head@ head@ … 了嗎,

當前版本是 head@,其實之前 head@是最新的版本的,我們想**前滾**到 head@這個commit_id 上怎麼做?

還是和場景3的做法一致!

$ git reset --hard c45051284d211114cdce1499e635bc8252e0bbba  # 強制前滾到 "測試提交2" 那一次提交操作

$ git push origin head --force # 強制提交遠端 此時本地遠端倉庫版本一致,一併恢復到

例如下面的情況,我想撤銷 「測試提交3」 這一次的全部檔案修改,怎麼弄?

採用 git revert 命令進行撤銷提交操作

通過revert命令反做乙個版本的提交,git revert是用於「反做」某乙個版本,以達到撤銷該版本的修改的目的。

git revert -n c45051284d211114cdce1499e635bc8252e0bbba   # 撤銷 「測試提交3」 那一次的提交,不影響「測試提交4」的提交 ,-n 是--no-commit 如果不帶這個引數會自動提交一條commit
git revert之後,反做的操作已經add到了暫存區,可以進行本地檔案修改操作,然後再次做commit操作和push操作。

thanks over .

Git 撤銷 回滾操作

workdir進行add操作將當前修改同步到 index,執行commit操作同步到head,執行push上傳到server。git reset head commitid 使用head或者commitid覆蓋index,不影響head和workdir,如果是在commit之後執行這個操作相當於同時...

git撤銷與回滾

1 檔案修改了,沒有進行add操作 git checkout filename git checkout 2 對不想提交的檔案進行了git add操作 git status git reset head 3 修改的檔案已被git commit,但想再次修改不再產生新的commit git commi...

Git撤銷 回滾操作

git checkout filename git checkout git add git status 取消暫存 git reset head 取消暫存 git resethead filename 撤銷修改 git checkout filename 修改最後一次提交 git add samp...