終端一般 Git命令
增加新功能
///從dev建立特性分支
(dev)$: git checkout -b feature/xxx
///開發(fā)
(feature/xxx)$: blabla
(feature/xxx)$: git add xxx
(feature/xxx)$: git commit -m 'commit comment'
///把特性分支合并到dev
(dev)$: git merge feature/xxx --no-ff
修復(fù)緊急bug
///從master建立hotfix分支
(master)$: git checkout -b hotfix/xxx
///開發(fā)
(hotfix/xxx)$: blabla
(hotfix/xxx)$: git add xxx
(hotfix/xxx)$: git commit -m 'commit comment'
/// 把hotfix分支合并到master,并上線到生產(chǎn)環(huán)境
(master)$: git merge hotfix/xxx --no-ff
///把hotfix分支合并到dev,同步代碼
(dev)$: git merge hotfix/xxx --no-ff
測試環(huán)境代碼
///把dev分支合并到release,然后在測試環(huán)境拉取并測試
(release)$: git merge dev --no-ff
生產(chǎn)環(huán)境上線
///把testing測試好的代碼合并到master,運(yùn)維人員操作
(master)$: git merge testing --no-ff
///給版本命名,打Tag
(master)$: git tag -a v0.1 -m '部署包版本名'
新建分支

創(chuàng)建了Develop分支,如下:

Demo: 創(chuàng)建功能開發(fā)分支feature/Harley

效果:

遠(yuǎn)程檢出分支


效果圖:

刪除分支
刪除遠(yuǎn)程分支

? 這是刪除遠(yuǎn)程的分支,本地分支還沒有刪除,需要進(jìn)行下一步刪除本地分支。
刪除本地分支

拉取
? master分支的內(nèi)容是最新的,feature/Harley的分支版本落后于master,從遠(yuǎn)程拉取內(nèi)容合并到feature/Harley的分支上,如下圖步驟:

合并分支
第一種方法

第二種方法

代碼回滾
適用于的場景:
- 提交錯代碼,想放棄剛剛提交的部分;
- 代碼發(fā)生沖突,處理比較麻煩,為了代碼安全,直接回滾到之前干凈的代碼。
回滾分為本地回滾和遠(yuǎn)程回滾;
本地回滾,回滾已經(jīng)提交的代碼,但還未推送到遠(yuǎn)程倉庫。


使用模式:
軟合并:保留上第二次提交的修改內(nèi)容,就等第二次提交的【概述】了。
混合合并:保留上第二次提交的修改內(nèi)容,就等第二次提交的【概述】了(與軟合并沒啥區(qū)別)。
強(qiáng)行合并:清除第二次提交的所有內(nèi)容,第一次提交的【概述】也沒有了,好像剛剛第一次的提交。
效果圖:

遠(yuǎn)程回滾
? SourceTree默認(rèn)是不提供這種操作的,因為存在風(fēng)險。所以,回滾遠(yuǎn)程代碼,一定要注意:
①. 想要放棄的代碼,是所有開發(fā)成員都一致同意的;
②. 想要放棄的代碼只是自己的,中間沒有別人的提交記錄,這可以直接回滾。
③. 這個操作過程中,提醒其他成員不要推送代碼。
-
Frist Stemp
SourceTree 開啟【允許強(qiáng)制推送】權(quán)限 -
Second Stemp
回滾到想提交的位置
-
Third Stemp
強(qiáng)制推送
效果圖:

變基

作用:
- 變基到其他分支,不會生成新的提交節(jié)點(diǎn);
- 壓縮提交消息;
①變基到其他分支將Harley 分支內(nèi)容接到 develop

注意:在這里,先要拉取,再推送,否則會失敗,下面是推送,如下:

打Tag
功能:
- 輕量級的:它其實是一個獨(dú)立的分支,或者說是一個不可變的分支.指向特定提交對象的引用;
- 帶附注的:實際上是存儲在倉庫中的一個獨(dú)立對象,它有自身的校驗和信息,包含著標(biāo)簽的名字,標(biāo)簽說明,標(biāo)簽本身也允許使用 GNU Privacy Guard (GPG) 來簽署或驗證,電子郵件地址和日期,一般我們都建議使用含附注型的標(biāo)簽,以便保留相關(guān)信息。

也可以像下圖那樣打標(biāo)簽???那樣:

Tag 的使用請看這里。
Tag 和 branch 的區(qū)別:
- tag 對應(yīng)某次 commit, 是一個點(diǎn),是不可移動的;
- branch 對應(yīng)一系列 commit,是很多點(diǎn)連成的一根線,有一個HEAD 指針,是可以依靠 HEAD 指針移動的。
? 所以,兩者的區(qū)別決定了使用方式,改動代碼用 branch ,不改動只查看用 tag。
? tag 和 branch 的相互配合使用,有時候起到非常方便的效果,例如 已經(jīng)發(fā)布了 v1.0 v2.0 v3.0 三個版本,這個時候,我突然想不改現(xiàn)有代碼的前提下,在 v2.0 的基礎(chǔ)上加個新功能,作為 v4.0 發(fā)布。就可以 檢出 v2.0 的代碼作為一個 branch ,然后作為開發(fā)分支。
Git 工作流
1??在develop 分支建立 release分支


參考資料
Git 分支闡述
sourceTree合并某次提交
source tree進(jìn)行rebase操作
合并多次提交


