Git版本控制 05 可以吃後悔藥之版本回退

2022-07-02 14:06:09 字數 2157 閱讀 9055

當我們提交了很修改的檔案後,第二天一早突然覺得,昨天的檔案其實不用修改,這時候怎麼辦呢?

git給我們提供了吃後悔藥的機會。

首先:我們可以通過git log命令檢視,我們的提交記錄。

$ git log

commit 51b73ae20c9be52a9c1893b52cb58d9f45ed3106 (head ->master)

author: yibochen

<[email protected]>date: sun aug

900:44:23

2020 +0800

在learngit檔案中新增了幾個字

commit 3089e7c13d1d6c1b67931531eb7bc4a5bf1af6ad

author: yibochen

<[email protected]>date: sun aug

900:28:51

2020 +0800

再次提交

commit f2aa600de1237c5943e3d402383d58b7fc136590

author: yibochen

<[email protected]>date: sun aug

900:26:36

2020 +0800

提交另乙個learngit檔案

從上面的記錄可以看出,我們總共提交了三次。這些提交記錄,就像時間軸一樣被連成了一條線。

倘若我們想要回到某個「時刻」(版本)的狀態。該怎麼做呢?

使用git reset --hard 版本號 命令 即可回退到某個版本(從下面可以看出 當前的版本已經回到了 "再次提交"的時候了)

$ git reset --hard 3089e7c13d1d6c1b67931531eb7bc4a5bf1af6ad

head

is now at 3089e7c 再次提交

此時我們可以通過gitk調出視覺化命令 來檢視一下版本提交提示。

可以看出 提交日誌就剩下兩條了。也就是我們現在存在的就剩兩條版本了。

這時有一種情況要考慮:你從2023年做時光機來到了2023年,結果你發現你回不去了,怎麼辦?

第一種情況:我們還沒有關閉git bash命令視窗 還能夠往上翻看到 最新的版本是什麼,然後通過git reset --hard 版本號 的方式回到最新的版本。

$ git reset --hard 51b73ae20c9be52a9c1893b52cb58d9f45ed3106

head

is now at 51b73ae 在learngit檔案中新增了幾個字

使用gitk看一下現在的歷史時間軸

可以看到,又恢復到了之前的三個。

第二種情況:我們已經關掉了git bash命令視窗 而且我們是第二天才想起來,之前的版本回退是自己草率了,自己想回到最新的版本,那麼這時,git提供了乙個git reflog命令,可以解決我們的問題。

$ git reflog

51b73ae (head -> master) head@: reset: moving to 51b73ae20c9be52a9c1893b52cb58d9f45ed3106

3089e7c head@: reset: moving to 3089e7c13d1d6c1b67931531eb7bc4a5bf1af6ad

51b73ae (head -> master) head@: commit: 在learngit檔案中新增了幾個字

3089e7c head@: commit: 再次提交

f2aa600 head@: commit (initial): 提交另乙個learngit檔案

從倒數第三行記錄可以看出,最新版本的版本號是 "51b73ae",我們就仍可以通過使用git reset --hard xx命令回到最新版本了。

git常見後悔藥

撤銷本地全部沒有git add過的修改 git checkout 使用庫上檔案覆蓋本地修改 當然是指用本地庫覆蓋 git checkout file name 回退掉某一次commit,回退方式是自動生成乙個反向的commit,不會影響其他commmitgit revert commitid 將gi...

git上的後悔藥

修改上一次提交的文案 git commit amend 複製 我第一次提交時執行了命令 git add git commit m add some thing 但是commit後悔了,需要做一些修改再提交 再次提交的時候執行 git commit amend 這時候log日誌只顯示一條資訊 撤銷操作...

Git 中的後悔藥

處理生活中需要 撤回的場景 工作區中的 想撤回 沒有提交過的 git checkout add 到暫存區的 想撤回。git reset head提交到本地倉庫的 想撤回。git reset soft 版本號 也可以修改soft為hard放棄版本後的所有修改。遠端提交的 想撤回。在本地修改完之後,使用...