版本回退html
前面咱們成功的提交了一次mygit.txt,下面咱對它進行修改,內容以下:linux
Hello Git Git is so easy.
而後用git status來跟蹤該文件的狀態:git
能夠看到hellogit.txt已經被修改過了,到底此次修改的內容與上次的內容有什麼不一樣的,我們可使用git diff查看(若想退出當前狀態再也不看下去,按下Q鍵即退出;其餘退出亦同。):vim
固然你也能夠查看上次提交的信息,使用git log:windows
經過前面一章咱們知道,該文件還處於工做區,所以咱們又可使用add、commit操做了:app
這裏筆者偷了個懶,直接用-m表示提交的信息,固然在學習過程當中咱能夠這樣,但實際工做中通常不這麼寫。編輯器
好了,提交完後咱再用git status來跟蹤一下(建議多使用git status)狀態:學習
這裏依然是:Git告訴我們當前沒有須要提交的修改,並且工做目錄是乾淨的。google
下面再學一個命令:git reflog,它主要用來記錄你的每一次命令和commit id,這個命令很是有效,也建議你們經常使用。spa
能夠看到咱提交的id號和提交的message被顯示出來了。
加入你如今不想修改了,想回到原來那個版本,該怎麼辦呢?別急,這一點Git早就幫咱們想好了,使用git reset --hard HEAD^
注意:這裏HEAD上面^表示回到上一個版本,若是想回到前面第五個版本呢?咱們能夠用git reset --hard HEAD~5,固然由於咱們這裏只修改了1次,因此咱們最多隻能回到前面一個版本。打開hellogit.txt看看,是內容不是Hello Git呢?固然若是你又想修改回去,那麼我們還有辦法,用git reset --hard commit-id:
注意:這裏的e75e865指的是commit id,上面已經說了,這裏就再也不贅述。
在Git中,老是有後悔藥能夠吃的。當你用$ git reset --hard HEAD^回退到「add distributed」版本時,再想恢復到「append GPL」,就必須找到「append GPL」的commit id。Git提供了一個命令git reflog用來記錄你的每一次命令:
[html] view plaincopy
$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file
終於舒了口氣,第二行顯示「append GPL」的commit id是3628164,如今,你又能夠乘坐時光機回到將來了。
撤銷修改:
下面咱們再次對helliogit.txt進行修改,內容以下:
Hello Git Git is so easy. Easily learn the Git.
而後咱們用git status跟蹤狀態:
這裏Git會告訴你,git checkout -- file能夠丟棄工做區的修改:
命令git checkout -- readme.txt意思就是,把readme.txt文件在工做區的修改所有撤銷,而後在查看狀態:
工做目錄有變回」clean「了,查看hellogit.txt內容 cat hellogit.txt
內容又改回來了,這樣就完成了一次簡單的修改撤銷。若是你把文件內容修改成原來添加時的:
Hello Git Git is so easy. Easily learn the Git.
git add hellogit.txt到了暫存區,我們還有辦法,使用git reset HEAD hellogit.txt來返回到工做區狀態:
居然已經回到了工做區,那麼我們就能夠向以前那樣,使用git checkout -- hellogit.txt了:
好了,一切又回到了,原來的狀態。若是你還從暫存區提交到了版本庫,還記得上面的版本回退嗎?能夠回到上一個版本就OK了,不過若是你還將本地的修改推送到遠程版本庫(後面會講),那就沒有後悔藥吃了。
刪除文件:
前面已經說了,在Git中,刪除也算一個修改操做。下面我們先添加一個新文件1.txt到Git而且提交:
這是你若是執行rm 1.txt把1.txt文件刪了,那麼這個時候,Git知道你刪了文件,工做區和版本庫就不一致了,咱們再用git status跟蹤一下:
這是你有兩個選擇,一是確實要從版本庫中刪除,使用git rm 1.txt並commit一下:
注意:你刪除以後,你只能恢復文件到最新版本,你會丟失最近一次提交後你修改的內容。
另外一種狀況,你以爲你刪除了想修改過來,由於版本庫中還存在,因此能夠很輕鬆地把誤刪的文件恢復到原來版本。
能夠看到,1.txt有回到工做區了。
關於VIM窗口
另外,開始用git commit 提交的時候是用 -m 「message」的
後來直接用git commit 回車後彈出一個窗口,後來才知道是linux下的文本編輯器
鬱悶的是半天退出不出來,baidu,google一番,
進入以後是VIM的普通模式,按 i 鍵,進入INSERT模式,這是能夠輸入message了。
輸入完成以後,按ESC鍵進入命令模式 ,輸入冒號(在窗口下面顯示),而後輸入x,回車就OK了。
其實能夠用記事本代替vim,
輸入以下配置:
git config --global core.editor C:/windows/notepad.exe
若是想進一步瞭解vim的一些知識,推薦博客:http://beiyuu.com/git-vim-tutorial/