前面介紹了Git版本控制,爲咱們省去了不少沒必要要的麻煩。python
有沒有想過,在咱們開發過程當中,修改須要是常有的事,若是咱們如今不想要這個功能了,那麼如何回到以前的版本呢?回滾,回到上一個版本。git
那若是咱們後來又想把那個功能加上,但又不能回滾道以前的版本,怎麼辦?咱們能夠在版本庫找到全部的版本 ,返回到咱們須要的版本,繼續開發。vim
git reflog 查看全部版本 git reset -hard 回滾 git checkout
若是咱們在可發的過程當中,以前上線的代碼出現bug怎麼辦?app
stash用於將工做區發生變化的全部文件獲取臨時存儲在「某個地方」,將工做區還原當前版本未操做前的狀態;stash還能夠將臨時存儲在「某個地方」的文件再次拿回到工做區。學習
stash相關經常使用命令:版本控制
執行 git stash pop 命令時,可能會遇到衝突,由於在緊急修復bug的代碼和經過stash存儲在「某個地方」的代碼會有重合部分,因此執行 git stash pop 時候就會出現衝突,有衝突解決衝突便可。那就須要咱們手動解決衝突了。blog
分支學習:branch稱爲分支,默認僅有一個名爲master的分支。通常開發新功能流程爲:開發新功能時會在分支dev上進行,開發完畢後再合併到master分支。開發
MacBook-Pro-4:pondo yaya$ git branch dev # 建立新分支,即:拷貝一份當前所在分支代碼到新分支 MacBook-Pro-4:pondo yaya$ git checkout dev # 切換到dev分支 MacBook-Pro-4:pondo yaya$ vim app01/views.py # 開發功能 MacBook-Pro-4:pondo yaya$ git status # 查看狀態,即:在dev分支修改了app01/views.py文件 On branch dev Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: app01/views.py no changes added to commit (use "git add" and/or "git commit -a") MacBook-Pro-4:pondo yaya$ git add . # 將修改文件添加到版本庫的暫存區 MacBook-Pro-4:pondo yaya$ git commit -m '新功能開發完畢' # 將暫存區的內容提交到當前所在分支,即:dev分支 [dev 32b40cd] 新功能開發完畢 1 file changed, 2 insertions(+) MacBook-Pro-4:pondo yaya$ git checkout master # 切換回master分支 Switched to branch 'master' MacBook-Pro-4:pondo yaya$ git merge dev # 將dev分支內容合併到master分支 Updating 0972f4b..32b40cd Fast-forward app01/views.py | 2 ++ 1 file changed, 2 insertions(+)
注意:git merge 時也可能會出現衝突,解決衝突的方式上述stash相同,即:找到衝突文件,手動修改衝突並提交,此處再也不敖述。it
branch相關經常使用命令:io