做新功能時,有時直接就在 master branch 上改動而忘記開新 branch,結果要 push 時才發現沒換分支,但是已經 commit 好幾個了,因此不能用 git checkout -b
以下為帆哥提點
1. 在改動的 master 上開一個 branch
此時在 master 上 commit 的紀錄會全部複製到新 branch
1 | $ git branch <newbranchname> |
2. master 退回之前版本
害怕 reset 後改動不見的可以先把上一步新開的 branch 推上 github,再將本地的 master 退回之前版本
首先到 sourceTree 選中要回退的版本,右鍵選擇 reset current branch to this commit
選擇 Hard 模式
選項解釋
- soft: 回退到暫存區
- Mixed: 回退到未暫存區
- Hard: 直接把提交的文件reset
確認後 master 就成功回退到過去版本了,接著可以切到新的 branch 上繼續做事了
CLI 操作
相對版本
$ git reset --hard HEAD
回復到最新提交版本$ git reset --hard HEAD~
等於 1 回復到上一個提交版本n` n 等於往上第幾個提交版本 回復之前指定的提交版
`$ git reset –hard HEAD
由於無介面,CLI 得使用 git log --oneline
去看之前的版本紀錄,再算要回到幾個版本前喔
指定版本
也可以直接指定要回到哪一個版本
1 | $ git reset --hard 85e7e30 |