1. 程式人生 > >遠端程式碼回滾和分支merge

遠端程式碼回滾和分支merge

遠端程式碼回滾

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
  1. 在本地將分支切到master
  2. 將原生代碼回滾到上一個穩定版本r-180111-161400-xxx
  3. 將本地master分支的head指向遠端master(確保提交程式碼到遠端時,不需要merge)
  4. 提交回滾的程式碼
  5. 將本地回滾的程式碼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
  1. 保留本地分支程式碼的改動,將head指向回滾時的那個“提交點”,可以從遠端倉庫或本地master獲取回滾點(確保後續merge的時候,程式碼不會丟)
  2. 暫存改動的程式碼
  3. merge遠端的最新程式碼到本地
  4. 將暫存的程式碼和最新的程式碼合併
  5. 提交merge最新後的程式碼和回滾後修改好的程式碼
  6. 將本地分支程式碼提交到遠端

命令區分

  • 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