介紹三種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 => 工作目錄底下的檔案已經被修改,跟索引的內容不一致