當我們提交了很修改的檔案後,第二天一早突然覺得,昨天的檔案其實不用修改,這時候怎麼辦呢?
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此時我們可以通過gitk調出視覺化命令 來檢視一下版本提交提示。head
is now at 3089e7c 再次提交
可以看出 提交日誌就剩下兩條了。也就是我們現在存在的就剩兩條版本了。
這時有一種情況要考慮:你從2023年做時光機來到了2023年,結果你發現你回不去了,怎麼辦?
第一種情況:我們還沒有關閉git bash命令視窗 還能夠往上翻看到 最新的版本是什麼,然後通過git reset --hard 版本號 的方式回到最新的版本。
$ git reset --hard 51b73ae20c9be52a9c1893b52cb58d9f45ed3106使用gitk看一下現在的歷史時間軸head
is now at 51b73ae 在learngit檔案中新增了幾個字
可以看到,又恢復到了之前的三個。
第二種情況:我們已經關掉了git bash命令視窗 而且我們是第二天才想起來,之前的版本回退是自己草率了,自己想回到最新的版本,那麼這時,git提供了乙個git reflog命令,可以解決我們的問題。
$ git reflog從倒數第三行記錄可以看出,最新版本的版本號是 "51b73ae",我們就仍可以通過使用git reset --hard xx命令回到最新版本了。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檔案
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放棄版本後的所有修改。遠端提交的 想撤回。在本地修改完之後,使用...