- 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吧