查看分支
查看本地所有分支:
1 2
|
$ git branch * master
|
master 分支前的 * 字符,它表示當前所在的分支。
查看遠程所有分支:
1 2
|
$ git branch -r origin/master
|
列出所有本地分支和遠程分支:
1
|
$ git branch -a
|
創建本地 dev1 分支
1 2
|
$ git checkout -b dev1 Switched to a new branch 'dev1'
|
本地 master 分支默認就是遠程 master 分支,上面命令在此基礎上創建本地 dev1 分支,然後切換到 dev1 分支,相當於以下兩條命令:
1 2
|
$ git branch dev1 $ git checkout dev1
|
想從遠程分支 dev (遠程有該分支)創建本地分支 dev1:
1 2
|
$ git checkout -b dev1 origin/dev Switched to a new branch 'dev1'
|
開發提交
隨便修改 README.md 文件,然後提交:
add 文件
1
|
$ git add README.md
|
commit 信息
1 2 3
|
$ git commit -m "branch test" [dev1 8643ecb] branch dev1 2 files changed, 3 insertions(+)
|
合併到本地 master 分支
分支 dev1 開發工作完成,我們就可以切換回本地 master 分支:
1 2
|
$ git checkout master Switched to branch 'master'
|
進行本地分支 dev1 合併:
1 2 3 4 5
|
$ git merge dev1 Updating 82951ea..444bb8e Fast-forward README.md | 1 + 1 file changed, 1 insertion(+)
|
Fast-forward 信息,“快進模式”合併,這種模式下,刪除分支後,會丟掉分支信息,可以用 –no-ff 方式進行 merge :
1
|
$ git merge --no-ff -m "merge with no-ff" dev1
|
如果分支很多,這個分支歷史可能就會變得很複雜了,可以使用 rebase,提交的歷史會保持線性:
1
|
$ git rebase dev1
|
也是進行本地分支 dev1 合併。
刪除本地分支
1
|
$ git branch -d dev1
|
這是刪除,如果沒有完成合並會有提示,以下是強刪:
1 2
|
$ git branch -D dev1 Deleted branch dev1 (was d39f6c3).
|
創建遠程分支 dev
直接提交
1
|
$ git push origin master:dev
|
這裏冒號可以提交到指定分支,上面命令,把提交本地 master 分支到遠程的 dev 分支,遠程沒有dev這個分支,會創建。
1
|
git push origin master
|
這是本地 master 提交到遠程主分支 master,相當於:
1
|
git push origin master:master
|
跟蹤遠程分支
從遠程分支 checkout 出來的本地分支,稱爲 跟蹤分支 (tracking branch)。跟蹤分支是一種和某個遠程分支有直接聯繫的本地分支。在跟蹤分支裏輸入 git pull/push,Git 會自行推斷應該向哪個服務器的哪個分支更新/推送數據。
手動建立追蹤關係:
1 2
|
$ git branch -u origin/dev master Branch master set up to track remote branch dev from origin.
|
或者:
1 2
|
$ git branch --set-upstream-to origin/dev master Branch master set up to track remote branch dev from origin.
|
指定本地 master 分支追蹤遠程 dev 分支。
查看所有分支跟蹤關係:
1 2
|
$ git branch -vv * master 444bb8e [origin/dev] branch test
|
合併遠程分支
我們把遠程分支 dev 合併到 master,怎麼做?
1、指定本地 master 分支追蹤遠程 dev 分支
1 2
|
$ git branch -u origin/dev master Branch master set up to track remote branch dev from origin.
|
2、更新內容
1 2 3 4 5 6 7 8 9 10 11
|
$ git pull remote: Counting objects: 3, done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From https://github.com/WuXiaolong/GitBranchSample 0138684..d0ca159 dev -> origin/dev Updating 0138684..d0ca159 Fast-forward README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
|
3、開發提交遠程分支 dev
修改了 README.md 文件,然後提交:
add 文件
1
|
$ git add README.md
|
commit 信息
1 2 3
|
$ git commit -m "merge origin/dev" [master 44150b4] merge origin/dev 1 file changed, 1 insertion(+), 1 deletion(-)
|
進行 push
1 2 3 4 5 6 7 8 9
|
$ git push origin master:dev Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 310 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To https://github.com/WuXiaolong/GitBranchSample.git d0ca159..44150b4 master -> dev
|
4、指定本地 master 分支追蹤遠程 master 分支
1 2
|
$ git branch -u origin/master master Branch master set up to track remote branch master from origin.
|
5、更新內容
1 2
|
$ git pull Already up-to-date.
|
6、同樣提交遠程分支 master
不用 commit ,上面已經 commit 了,也提交給 origin/master,這樣遠程分支 dev 和 master 就是一樣的。
1 2 3 4
|
$ git push origin master Total 0 (delta 0), reused 0 (delta 0) To https://github.com/WuXiaolong/GitBranchSample.git 0138684..44150b4 master -> master
|
PS:以上遠程分支合併,我不知道是不是正確的方式,望指導。
刪除遠程分支
1
|
$ git push origin --delete dev
|
或者
1
|
$ git push origin :dev
|
遠程分支 dev 將被刪除。
Android Studio 實踐
畢竟我們開發工具是 Android Studio,知道 Android Studio 進行分支開發是必要的。
查看當前分支
這個分支指的當然是本地的,默認 master。
創建本地 dev1 分支
以 origin/master 爲基礎 checkout 本地分支 dev1。
合併到本地 master 分支
同樣修改 README.md 文件,add,commit,然後切換到 master 分支:
再 push 就 OK 了。
刪除本地分支
如上圖,有個 Delete 按鈕,點擊直接幹掉。
創建遠程分支 dev
直接提交,我們會發現是提交到遠程 master 上,這裏我們可以修改:
改成 dev,點擊 Enter,然後 Push,這樣遠程就有了分支 dev。
查看跟蹤遠程分支
如上圖可以查看跟蹤關係,也可以手動修改。
合併遠程分支
修改 README.md 文件,add,commit,分別提交到遠程 dev 和 master 即可,是不是比命令行簡單多了啊。
刪除遠程分支
點擊 origin/dev,直接刪除就好了。
拓展
git fetch
1
|
$ git fetch origin master
|
下載遠程 master 的所有變動到當前分支,與 git pull 區別,沒有與本地合併。
參考
來自掘金論壇:http://wuxiaolong.me/2017/03/09/gitBranch/