分支對大部分開發人員來說並不陌生,git的分支也不例外。
分支在實際中有什麼用呢?假設你準備開發乙個新功能,但是需要兩周才能完成,第一周你寫了50%的**,如果立刻提交,由於**還沒寫完,不完整的**庫會導致別人不能幹活了。如果等**全部寫完再一次提交,又存在丟失每天進度的巨大風險。
現在有了分支,就不用怕了。你建立了乙個屬於你自己的分支,別人看不到,還繼續在原來的分支上正常工作,而你在自己的分支上幹活,想提交就提交,直到開發完畢後,再一次性合併到原來的分支上,這樣,既安全,又不影響別人工作。
git分支的速度非常快。
截止到目前,只有一條時間線,在git裡,這個分支叫主分支,即master分支。head嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,head指向的就是當前分支。直接看圖清晰明了
# 列出所有本地分支
$ git branch
# 列出所有遠端分支
$ git branch -r
# 列出所有本地分支和遠端分支
$ git branch -a
# 新建乙個分支,但依然停留在當前分支
$ git branch [branch-name]
# 新建乙個分支,並切換到該分支
$ git checkout -b [branch]
# 新建乙個分支,指向指定commit
$ git branch [branch] [commit]
# 新建乙個分支,與指定的遠端分支建立追蹤關係
$ git branch --track [branch] [remote-branch]
# 切換到指定分支,並更新工作區
$ git checkout [branch-name]
# 切換到上乙個分支
$ git checkout -
# 建立追蹤關係,在現有分支與指定的遠端分支之間
$ git branch --set-upstream [branch] [remote-branch]
# 合併指定分支到當前分支
$ git merge [branch]
# 選擇乙個commit,合併進當前分支
$ git cherry-pick [commit]
# 刪除分支
$ git branch -d [branch-name]
# 刪除遠端分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
每次提交,git都把它們串成一條時間線,這條時間線就是乙個分支。截止到目前,只有一條時間線,在git裡,這個分支叫主分支,即master分支。head嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,head指向的就是當前分支。
一開始的時候,master分支是一條線,git用master指向最新的提交,再用head指向master,就能確定當前分支,以及當前分支的提交點:
每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長:
預設是這樣的,master是主分支
新建乙個分支,但依然停留在當前分支,使用:$ git branch [branch-name]
當我們建立新的分支,例如dev時,git新建了乙個指標叫dev,指向master相同的提交,再把head指向dev,就表示當前分支在dev上:
所以git合併分支也很快!就改改指標,工作區內容也不變!
合併完分支後,甚至可以刪除dev分支。刪除dev分支就是把dev指標給刪掉,刪掉後,我們就剩下了一條master分支:
列出所有本地分支使用$ git branch
列表所有遠端分支使用$ git branch -r
列出所有本地分支和遠端分支使用$ git branch -a
合併指定分支到當前分支使用指令$ git merge [branch]
如果同乙個檔案在合併分支時都被修改了則會引起衝突
分支策略
master主分支應該非常穩定,用來發布新版本,一般情況下不允許在上面工作,工作一般情況下在新建的dev分支上工作,工作完後,比如上要發布,或者說dev分支**穩定後可以合併到主分支master上來。
刪除本地分支可以使用命令:$ git branch -d [branch-name],-d(大寫)強制刪除
刪除遠端分支可以使用如下指令:
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
-d表示刪除分支。分支必須完全合併在其上游分支,或者在head上沒有設定上游-r表示遠端的意思remotes,如果-dr則表示刪除遠端分支
版本控制工具Git之idea整合Git04
idea中整合git 1 新建專案,繫結git。注意觀察idea中的變化 2 修改檔案,使用idea操作git。3 提交測試 這些都是單個人的操作!有道無術 術尚可求。有術無道 止於術!真正的教學,授人以漁!分支在git中相對較難,分支就是科幻電影裡面的平行宇宙,如果兩個平行宇宙互不干擾,那對現在的...
版本控制軟體之Git
版本控制 revision control 是一種在開發的過程中用於管理我們對檔案 目錄或工程等內容的修改歷史,方便檢視更改歷史記錄,備份以便恢復以前的版本的軟體工程技術。主流的版本控制器有如下這些 現在影響力最大且使用最廣泛的是git與svn cd 改變目錄。cd 回退到上乙個目錄,直接cd進入預...
git版本控制
1.git 是乙個開源的分布式版本控制系統,可以有效 高速的處理從很小到非常大的專案版本 管理。2.git配置管理 一般,有乙個 集中庫,包含4個分支 qa才能merge production 發布生產,出現生產問題,轉hotfix 研發經理 hotfix 解決緊急生產問題,測試後轉producti...