git reset深入理解

2021-08-16 10:02:17 字數 2246 閱讀 7534

git reset 一直用的不太好,今天就把git reset深入學習一下。

git reset 字面意思為重置

經常用於將已經存放到暫存區,或者工作區的**取出來,返回到工作區。

如果已經使用 git add . 將**提交到了暫存區。這時候,我們可以使用git reset :

這提示將會把暫存區的資料,返回到工作區。

如果已經使用git commit -m 「message」 將**提交到了本地倉庫。這時候,我們可以使用 git reset head

git reset 有三個引數 soft | 預設的mixed | hard

回退檔案:

有的時候,我們通過git add . 將檔案提交到了暫存區,但是我們有不想commit,想撤回。可以使用

git reset filename將檔案移回到工作區。

也可以不加任何引數,用git reset將整個暫存區的檔案恢復到工作區。

$ git reset

unstaged changes after reset:

m web.html

回退版本:

版本的標記

~和^都可以標記那個版本

乙個^表示乙個版本,可以多個,另外也可以使用 git reset head~n這種形式。

重置到那個版本

git reset head~1 意為將版本庫回退1個版本,將本地版本庫的頭指標全部重置到指定版本,且會重置暫存區,即這次提交之後的所有變更都移動到未暫存階段

即將已經存到本地倉庫中的資料,撤銷,然後放到工作區。

git reset –soft head~1 意為將版本庫軟回退1個版本,所謂軟回退表示將本地版本庫的頭指標全部重置到指定版本,且將這次提交之後的所有變更都移動到暫存區

administrator@biubiu mingw64 /e/code/trygit (master)

$ git reset --soft head~1

administrator@biubiu mingw64 /e/code/trygit (master)

$ git status

on branch master

your branch is up-to-date with

'origin/master'.

changes to be committed:

(use

"git reset head ..."

to unstage)

modified: web.html

modified: wucl.txt

git reset –hard head~1 意為將版本庫回退1個版本,但是不僅僅是將本地版本庫的頭指標全部重置到指定版本,也會重置暫存區,並且會將工作區**也回退到這個版本

就是將本地倉庫中的**,切換到上乙個版本。當前版本刪除,同時本地暫存區、工作區都回到上一版本。

如果使用git reset –hard head,並沒有

administrator@biubiu mingw64 /e/code/trygit (master)

$ git add .

administrator@biubiu mingw64 /e/code/trygit (master)

$ git commit -m "***"

[master aa11939] ***

2 files changed, 2 insertions(+)

administrator@biubiu mingw64 /e/code/trygit (master)

$ git reset --hard head^

head is now at d105688 merge pull request #1

in fz/trygit from feature/zhaowei to master

administrator@biubiu mingw64 /e/code/trygit (master)

$ git status

on branch master

your branch is up-to-date

with

'origin/master'.

nothing to

commit, working tree clean

參考文章

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...

mysql 索引深入理解 深入理解MySql的索引

為什麼索引能提高查詢速度 先從 mysql的基本儲存結構說起 mysql的基本儲存結構是頁 記錄都存在頁裡邊 各個資料頁可以組成乙個雙向鍊錶每個資料頁中的記錄又可以組成乙個單向鍊錶 每個資料頁都會為儲存在它裡邊兒的記錄生成乙個頁目錄,在通過主鍵查詢某條記錄的時候可以在頁目錄中使用二分法快速定位到對應...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...