遠端程式碼回滾和分支merge
阿新 • • 發佈:2018-12-31
遠端程式碼回滾
git checkout master
git reset --hard r-180111-161400-xxx
git reset --soft origin/master
git commit -a -m "revert master to r-180111-161400-xxx, because of先不修了"
git push origin master
- 在本地將分支切到master
- 將原生代碼回滾到上一個穩定版本r-180111-161400-xxx
- 將本地master分支的head指向遠端master(確保提交程式碼到遠端時,不需要merge)
- 提交回滾的程式碼
- 將本地回滾的程式碼push到遠端master
倉庫程式碼回滾後,同一分支merge
git checkout 分支名
git reset --soft 回滾的那個編號(master revert)
git stash
git merge origin/master
git stash pop
git mergetool
git commit -m "merge & keep code"
git push
- 保留本地分支程式碼的改動,將head指向回滾時的那個“提交點”,可以從遠端倉庫或本地master獲取回滾點(確保後續merge的時候,程式碼不會丟)
- 暫存改動的程式碼
- merge遠端的最新程式碼到本地
- 將暫存的程式碼和最新的程式碼合併
- 提交merge最新後的程式碼和回滾後修改好的程式碼
- 將本地分支程式碼提交到遠端
命令區分
- git reset --hard 和 --soft 的區別?
參考連結:http://blog.csdn.net/carolzhang8406/article/details/49761927
根據–soft –mixed –hard,會對working tree和index和HEAD進行重置:
git reset --mixed:此為預設方式,不帶任何引數的git reset,即時這種方式,它回退到某個版本,只保留原始碼,回退commit和index資訊
git reset --soft:回退到某個版本,只回退了commit的資訊,不會恢復到index file一級(修改的原始碼會保留)。如果還要提交,直接commit即可
git reset --hard:徹底回退到某個版本,本地的原始碼也會變為上一個版本的內容,此命令 慎用!
- git fetch 和 git pull 的區別?
參考連結:http://blog.csdn.net/hudashi/article/details/7664457
git fetch:相當於是從遠端獲取最新版本到本地,不會自動merge(即程式碼不會同步遠端程式碼,需執行git merge後會同步)
git pull:相當於是從遠端獲取最新版本並merge到本地(相當於git fetch 和 git merge)