Git - reset 介紹

  • 354
  • 0
  • 2018-11-01

介紹三種git reset 用法

1.git reset --p 可用來分區塊commit

2.git reset --hard  版本退回指定版本,working tree 跟著變動。

3.git reset --mixed  版本退回指定版本,但是working tree的內容沒有變動,可以用來整理索引

git reset 就是重置索引(Index)

git reset --hard 指定版號

git reset --hard HEAD~2   退回前兩個版本

commit 版本退回指定的版本,working tree 內容跟著變動(也就是復原變更)。

 

git reset 指定版號  => 沒有打--mixed的話預設就是 reset --mixed

git reset HEAD~2   退回前兩個版本 

git reset --mixed 指定版號

git reset --mixed HEAD~2   退回前兩個版本

版本退回指定的版本,但是working tree的內容沒有變動,可以用來重新整理索引。

例如我現在有三個commit 

我想要整理這三個commit,希望把這三筆commit 整理成一個就好。

這時候就可以使用git reset --mixed HEAD~2 來退回前兩個版本,也就是第一個14:13

但是此時working tree 內容是不會變動,只有分支master 退回去

這時候再重新使用 git add. 重新建立index,然後在commit ,就會如下圖,原本兩筆的commit 變成一筆 New Index 的commit

 

git reset --p

這個指令還不是很了解運作模式,如果有檔案內的部分內容不希望commit

可以在git add 檔名 -p 來進入編輯模式去修改要建立Index的內容

 

-p 的意思是 --patch select hunks(區塊,也就是你在程式碼內改的區塊內容) interactively(互動式的去選擇) 

目前在開發需求的時候,有碰到一個關於設定檔的問題,

在MVC的專案底下,Web.config檔裡面可能會設定共用的字串,也會設定我資料庫的連線字串,

在多人開發的情境底下,我希望web.config檔裡面的資料庫連線字串不要進到GitHub,在我本機可以保持自己的DB連線字串

但是其他設定共用的字串則是要進入GitHub讓其他人也可以正常取版來使用

首先,我在web.config 裡面加了兩筆文字資料

第一筆是我個人本機的DB連線字串(不希望進入GitHub影響到其他人)

第二筆是我建立的共用字串,希望要進到GitHub讓其他人也可以下載進行多人開發。

透過git status 可看到我目前只修改了web.config這個檔案

首先使用指令git add . 建立index 

然後使用 git reset -p 

 

================

git add . => 更新索引

git reset HEAD => 還原所有的索引,HEAD表示目前最新的版本

git reset HEAD <file> 還原指定檔案的索引


not staged => 工作目錄底下的檔案已經被修改,跟索引的內容不一致