1. 程式人生 > 其它 >Git分支與合併

Git分支與合併

技術標籤:gitgit

一、主分支Master

首先,程式碼庫應該有一個、且僅有一個主分支。所有提供給使用者使用的正式版本,都在這個主分支上釋出。
在這裡插入圖片描述

Git主分支的名字,預設叫做Master。它是自動建立的,版本庫初始化以後,預設就是在主分支在進行開發。

二、開發分支Develop

主分支只用來分佈重大版本,日常開發應該在另一條分支上完成。我們把開發用的分支,叫做Develop。
在這裡插入圖片描述

這個分支可以用來生成程式碼的最新隔夜版本(nightly)。如果想正式對外發布,就在Master分支上,對Develop分支進行"合併"(merge)。
Git建立Develop分支的命令:

git checkout -b develop master
等同於下面兩條:
git branch develop     
git checkout develop

將Develop分支釋出到Master分支的命令:

# 切換到Master分支
git checkout master
# 對Develop分支進行合併
git merge --no-ff develop

–no-ff引數是什麼意思。預設情況下,Git執行"快進式合併"(fast-farward merge),會直接將Master分支指向Develop分支
在這裡插入圖片描述

–no-ff 方式:
在這裡插入圖片描述

三、臨時性分支

前面講到版本庫的兩條主要分支:Master和Develop。前者用於正式釋出,後者用於日常開發。其實,常設分支只需要這兩條就夠了,不需要其他了。

但是,除了常設分支以外,還有一些臨時性分支,用於應對一些特定目的的版本開發。臨時性分支主要有三種:

  • 功能(feature)分支
  • 預釋出(release)分支
  • 修補bug(fixbug)分支

這三種分支都屬於臨時性需要,使用完以後,應該刪除,使得程式碼庫的常設分支始終只有Master和Develop。

1、功能分支

在這裡插入圖片描述

功能分支的名字,可以採用feature-*的形式命名。
建立一個功能分支:

git checkout -b feature-x develop

開發完成後,將功能分支合併到develop分支:

git checkout develop
git merge --no-ff feature-x

刪除feature分支:

git branch -d feature-x

2、預釋出分支

它是指釋出正式版本之前(即合併到Master分支之前),我們可能需要有一個預釋出的版本進行測試。

預釋出分支是從Develop分支上面分出來的,預釋出結束以後,必須合併進Develop和Master分支。它的命名,可以採用release-*的形式。

建立一個預釋出分支:

git checkout -b release-1.2 develop

確認沒有問題後,合併到master分支:

git checkout master
git merge --no-ff release-1.2
# 對合並生成的新節點,做一個標籤
git tag -a 1.2

再合併到develop分支:

git checkout develop
git merge --no-ff release-1.2

最後,刪除預釋出分支:

git branch -d release-1.2

分支常用命令:

git branch 分支名 // 新建分支
git branch // 檢視當前所有分支
git checkout 分支名 // 檢出分支
git checkout -b 分支名 // 建立並切換分支
git checkout commitId 檔名(檔案路徑下的檔名) 還原這個檔案到對應的commitId的版本
(例如src/page/attendance/attendanceSum.vue我想把它還原到2個版本之前 首先git log src/page/attendance/attendanceSum.vue找到對應想要還原的版本
複製版本提交的commitID 然後執行git checkout commitID src/page/attendance/attendanceSum.vue
這樣就把attendanceSum.vue這個單個檔案 還原到了對應版本)
git branch -v // 檢視分支以及提交hash值和commit資訊
git branch -d 分支名 // 刪除分支
git branch -D 分支名 // 強制刪除 若沒有其他分支合併就刪除 d會提示 D不會
git branch -m 舊分支名 新分支名 // 修改分支名
git branch -M 舊分支名 新分支名 // 修改分支名 M強制修改 若與其他分支有衝突也會建立(慎用)
git branch -r // 列出遠端分支(遠端所有分支名)
git branch -r -d origin/branch-name  //刪除遠端分支
git branch -a // 檢視遠端分支(列出遠端分支以及本地分支名)
git fetch // 更新remote索引
git push -u origin 分支名 // 將本地分支推送到origin主機,同時指定origin為預設主機,後面就可以不加任何引數使用git push 也可解決 git建立遠端分支//關聯時出現fatal ... upstram的問題