Git 時空穿梭

2021-10-04 02:38:34 字數 3341 閱讀 8353

這次玩一玩git的核心技能—時空穿梭

在quick start中我們了解到,git是乙個版本控制系統,那麼咱們就來控制一下版本。

首先,看一下readme.md的版本有哪些。用git log命令檢視

git log readme.md
輸出:

commit 9624d8b969e4e0e36acd63ea5be199f2f5efa7e9 (head -> master)

author: jiayuanxie <[email protected]>

date: fri mar 13 16:22:21 2020 +0800

change a file named readme.md

commit 365fe69b1c180cf903f9269d972d313c506cb428

author: jiayuanxie <[email protected]>

date: fri mar 13 16:12:43 2020 +0800

i create a new file named readme.md

可以看到有兩個版本,有點少,再來乙個版本,新增一行文字,具體操作略去。

看下現在的版本資訊,依然是用git log

commit b59f8356a40dd7193943285b9b3823722b3ceccc (head -> master)

author: jiayuanxie <[email protected]>

date: sat mar 14 13:17:34 2020 +0800

commit 9624d8b969e4e0e36acd63ea5be199f2f5efa7e9

author: jiayuanxie <[email protected]>

date: fri mar 13 16:22:21 2020 +0800

change a file named readme.md

commit 365fe69b1c180cf903f9269d972d313c506cb428

author: jiayuanxie <[email protected]>

date: fri mar 13 16:12:43 2020 +0800

i create a new file named readme.md

現在有了三個版本,按照時間排序,最近的在前面。

從現在開始回退,使用命令git reset --hard head^^,再用git log檢視版本:

f:\gitwork>git reset --hard head^^

head is now at 9624d8b change a file named readme.md

f:\gitwork>git log

commit 9624d8b969e4e0e36acd63ea5be199f2f5efa7e9 (head -> master)

author: jiayuanxie <[email protected]>

date: fri mar 13 16:22:21 2020 +0800

change a file named readme.md

commit 365fe69b1c180cf903f9269d972d313c506cb428

author: jiayuanxie <[email protected]>

date: fri mar 13 16:12:43 2020 +0800

i create a new file named readme.md

可以看到,版本回退到了第二個版本「change a file name readme.md」,開啟檔案確實如此。

哇,真的神奇!

那麼問題來了,我怎麼重返未來到第三個版本呢?

git 還是有後悔藥可以吃的,翻看命令的歷史記錄,找到版本3的commit id值,也就是commit後面那一串數字,利用這個就可以找回來。

f:\gitwork>git reset --hard b59f
再看一下日誌:

f:\gitwork>git log

commit b59f8356a40dd7193943285b9b3823722b3ceccc (head -> master)

author: jiayuanxie <[email protected]>

date: sat mar 14 13:17:34 2020 +0800

commit 9624d8b969e4e0e36acd63ea5be199f2f5efa7e9

author: jiayuanxie <[email protected]>

date: fri mar 13 16:22:21 2020 +0800

change a file named readme.md

commit 365fe69b1c180cf903f9269d972d313c506cb428

author: jiayuanxie <[email protected]>

date: fri mar 13 16:12:43 2020 +0800

i create a new file named readme.md

我又重返未來到版本3啦!

等下,如果我關機了,記錄不就沒有了嘛,我怎麼看版本3的commit id呢?

git 也考慮到了,使用git reflog命令就可以檢視命令歷史。

那如果不小心改錯了檔案,或者撤銷本次修改怎麼辦?

你可以發現,git會告訴你,git checkout -- file可以丟棄工作區的修改:

git checkout -- readme.md
命令git checkout -- readme.md意思就是,把readme.md`檔案在工作區的修改全部撤銷,這裡有兩種情況:

一種是readme.md自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是readme.md已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

總之,就是讓這個檔案回到最近一次git commitgit add時的狀態。

現在總結一下:

感謝廖雪峰老師詳細的基礎教程!

Git穿梭時空

在使用git的時候想把git add新增到暫存區的檔案撤出怎麼辦!或者想回到某個已經提交的版本怎麼辦,更甚者想把工作區的修改撤銷掉又該怎麼辦。這些想法就像穿梭時空一樣不可思議,但這在git裡都是可以實現的!先說把git add新增到暫存區之後,怎麼把檔案怎麼撤出暫存區。可以使用git reset h...

Git 時光穿梭

1.git status 命令可以讓我們掌握倉庫當前狀態 2.git diff 檔名 顧名思義 檢視difference,可以得到檔案更改的詳細資訊 3.head指向的版本是當前版本,git 允許我們在版本之間穿梭,使用命令 git reset hard commit id 穿梭前可以檢視提交歷史,...

Git時光機穿梭

一.1.檢視倉庫當前狀態 git status 2.檢視具體修改的內容 git diff readme.txt 提交前再看下是否包含某檔案 git status 3.提交檔案分兩步add 和commit git add readme.txt git status git commit m add d...