git branch merge rebase

  • branch -b 

創建分支: $ git branch mybranch
切換分支: $ git checkout mybranch
創建並切換分支: $ git checkout -b mybranch

更新master主線上的東西到該分支上:$git rebase master

切換到master分支:$git checkout master

更新mybranch分支上的東西到master上:$git rebase mybranch

提交:git commit -a

對最近一次commit的進行修改:git commit -a –amend

commit之後,如果想撤銷最近一次提交(即退回到上一次版本)並本地保留代碼:git reset HEAD^
合併分支:(merge from) $ git checkout master
$ git merge mybranch (merge from mybranch)
刪除分支: $ git branch -d mybranch
強制刪除分支: $ git branch -D mybranch
列出所有分支: $ git branch
查看各個分支最後一次提交: $ git branch -v





查看哪些分支合併入當前分支: $ git branch –merged

查看哪些分支未合併入當前分支: $ git branch –no-merged

更新遠程庫到本地: $ git fetch origin
推送分支: $ git push origin mybranch
取遠程分支合併到本地: $ git merge origin/mybranch
取遠程分支並分化一個新分支: $ git checkout -b mybranch origin/mybranch
刪除遠程分支:                 $ git push origin :mybranch



rebase: $ git checkout mybranch
$ git rebase master (rebase from master)

舉例: $ git checkout server
$ git rebase –onto master server client
$ git checkout master
$ git merge client (fostforward)
$ git rebase master server (checkout sever)
$ git merge server
$ git branch -d client
$ git branch -d server






  • git rebase & git merge

  • git merge 操作合併分支會讓兩個分支的每一次提交都按照提交時間(並不是push時間)排序,並且會將兩個分支的最新一次commit點進行合併成一個新的commit,最終的分支樹呈現非整條線性直線的形式

  • git rebase操作實際上是將當前執行rebase分支的所有基於原分支提交點之後的commit打散成一個一個的patch,並重新生成一個新的commit hash值,再次基於原分支目前最新的commit點上進行提交,並不根據兩個分支上實際的每次提交的時間點排序,rebase完成後,切到基分支進行合併另一個分支時也不會生成一個新的commit點,可以保持整個分支樹的完美線性

另外值得一提的是,當我們開發一個功能時,可能會在本地有無數次commit,而你實際上在你的master分支上只想顯示每一個功能測試完成後的一次完整提交記錄就好了,其他的提交記錄並不想將來全部保留在你的master分支上,那麼rebase將會是一個好的選擇,他可以在rebase時將本地多次的commit合併成一個commit,還可以修改commit的描述等

  • 最後

如果你想要你的分支樹呈現簡潔,不羅嗦,線性的commit記錄,那就採用rebase

否則,就用merge吧

https://www.jianshu.com/p/6960811ac89c

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章