Git flow

Git flow
Git flow

Git 基礎(chǔ)

概念

倉(cāng)庫(kù)

使用Git管理自己的文件,至少一個(gè)本地倉(cāng)庫(kù),如果需要在外部網(wǎng)絡(luò)共享需要使用遠(yuǎn)程倉(cāng)庫(kù)。

本地倉(cāng)庫(kù)

本地倉(cāng)庫(kù)指的是自己電腦里的倉(cāng)庫(kù),只用于管理自己文件的版本。

遠(yuǎn)程倉(cāng)庫(kù)

用于多人的項(xiàng)目管理,使用遠(yuǎn)程倉(cāng)庫(kù)來(lái)同步本地倉(cāng)庫(kù)。

分支

一個(gè)Git版本庫(kù),至少需要一個(gè)分支,像樹一個(gè),需要一個(gè)主干分支,一般Git版本庫(kù)中以Master分支做為主干分支。

標(biāo)簽

發(fā)布一個(gè)新的版本,需要給新發(fā)布的版本打標(biāo)簽,用于標(biāo)識(shí)每個(gè)版本的版本號(hào)。

沖突

在多人開發(fā)的項(xiàng)目中,同一個(gè)文件同時(shí)被多人修改,在這種情況下,合并會(huì)起沖突,解決沖突即可合并文件。

操作

倉(cāng)庫(kù)

創(chuàng)建本地倉(cāng)庫(kù)

$ git init

在當(dāng)前的項(xiàng)目中初始化一個(gè)git本地倉(cāng)庫(kù),刪除本地倉(cāng)庫(kù),只需要?jiǎng)h除目錄即可。

查看遠(yuǎn)程倉(cāng)庫(kù)

$ git remote

顯示當(dāng)前目錄的本地倉(cāng)庫(kù)關(guān)聯(lián)的遠(yuǎn)程倉(cāng)庫(kù)名稱

添加遠(yuǎn)程倉(cāng)庫(kù)

$ git remote add origin ssh://git@git.yunalading.com:220/jabber/test.git

添加名稱為origin的遠(yuǎn)程倉(cāng)庫(kù)地址為ssh://git@git.yunalading.com:220/jabber/test.git

刪除遠(yuǎn)程倉(cāng)庫(kù)

$ git remote remove origin 

刪除名稱為origin的遠(yuǎn)程倉(cāng)庫(kù)

更新本地倉(cāng)庫(kù)

fetch
$ git fetch [遠(yuǎn)程倉(cāng)庫(kù)名稱] [遠(yuǎn)程倉(cāng)庫(kù)中的分支]

獲取遠(yuǎn)程倉(cāng)庫(kù)的所有分支更新。git fetch:相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,不會(huì)自動(dòng)merge

pull
$ git pull [遠(yuǎn)程倉(cāng)庫(kù)名稱] [遠(yuǎn)程倉(cāng)庫(kù)中的分支]

git pull:相當(dāng)于是從遠(yuǎn)程獲取最新版本并merge到本地

發(fā)布到遠(yuǎn)程倉(cāng)庫(kù)

$ git push 

push當(dāng)前分支,到對(duì)應(yīng)的upstream分支中。

upstream
$ git push -u 遠(yuǎn)程倉(cāng)庫(kù)名稱 [遠(yuǎn)程倉(cāng)庫(kù)中的分支]

上游,第一次push指定了upstream之后,以后在push、fetch、pull的時(shí)候,即可省略遠(yuǎn)程倉(cāng)庫(kù)名稱分支,在push的時(shí)候使用-u來(lái)設(shè)置upstream

分支(Branch)

分支是主干的支干,用于做特定的事情。

創(chuàng)建分支

$ git branch 分支名稱

基于當(dāng)前分支創(chuàng)建一個(gè)新的分支,一般需要先checkout到Base分支,如git checkout develop,git branch test先后執(zhí)行兩個(gè)命令,會(huì)基于develop分支創(chuàng)建test分支

查看分支

$ git branch

切換分支

創(chuàng)建并切換
$ git checkout -b 分支名稱

基于當(dāng)前分支創(chuàng)建一個(gè)新的分支,使用之前需要checkout到Base分支。

切換到已有分支
$ git checkout 分支名稱

刪除分支

刪除本地分支
$ git branch -d 分支名稱

刪除分支的時(shí)候需要checkout到其他的分支上操作,分支正在使用不能被刪除。

刪除遠(yuǎn)程分支
git push 遠(yuǎn)程倉(cāng)庫(kù) -d 分支名稱

合并分支

$ git merge 分支名稱

合并分支到當(dāng)前分支。

基變

git rebase 分支名稱

rebase為原分支上每一個(gè)提交創(chuàng)建一個(gè)新的提交,重寫了項(xiàng)目歷史,并且不會(huì)帶來(lái)合并提交。用于整理項(xiàng)目的提交歷史。

狀態(tài)查看

$ git status

分支合并之后使用此命令可以查看哪些文件起沖突

日志

$ git log

查看提交記錄

發(fā)布分支

$ git push 

push當(dāng)前分支,到對(duì)應(yīng)的upstream分支中。git push --all發(fā)布所有分支到遠(yuǎn)程庫(kù)

upstream
$ git push -u 遠(yuǎn)程倉(cāng)庫(kù)名稱 [遠(yuǎn)程倉(cāng)庫(kù)中的分支]

上游,第一次push指定了upstream之后,以后在push、fetch、pull的時(shí)候,即可省略遠(yuǎn)程倉(cāng)庫(kù)名稱分支,在push的時(shí)候使用-u來(lái)設(shè)置upstream

標(biāo)簽(Tag)

創(chuàng)建標(biāo)簽

$ git tag -a 標(biāo)簽名稱 [分支名稱]

如果沒(méi)有填寫分支名稱默認(rèn)是當(dāng)前分支,在git flow中只允許創(chuàng)建master分支的標(biāo)簽

查看標(biāo)簽

$ git tag

刪除標(biāo)簽

刪除本地標(biāo)簽
$ git tag -d 標(biāo)簽名稱
刪除遠(yuǎn)程標(biāo)簽
$ git push 遠(yuǎn)程倉(cāng)庫(kù)名稱 -d tag 標(biāo)簽名稱  

如果本地已經(jīng)刪除,可以使用git push [遠(yuǎn)程倉(cāng)庫(kù)名稱] :[標(biāo)簽名稱]

發(fā)布標(biāo)簽

$ git push --tags

Git flow工作流程

創(chuàng)建Develop分支

$ git branch develop
$ git push -u origin develop 

創(chuàng)建Feature分支

$ git checkout -b feature/特性分支名稱 develop
$ git push -u 遠(yuǎn)程倉(cāng)庫(kù)名稱 feature/特性分支名稱  

完成Feature分支

$ git pull origin develop
$ git checkout develop
$ git merge --no-ff feature/特性分支名稱
$ git push origin develop

$ git branch -d feature/特性分支名稱
git push origin --delete some-feature    

創(chuàng)建Bugfix分支

$ git checkout -b bugfix/Bugfix分支名稱 develop
$ git push -u 遠(yuǎn)程倉(cāng)庫(kù)名稱 bugfix/Bugfix分支名稱  

完成Bugfix分支

$ git pull origin develop
$ git checkout develop
$ git merge --no-ff bugfix/Bugfix分支名稱
$ git push origin develop

$ git branch -d bugfix/Bugfix分支名稱
$ git push origin --delete bugfix/Bugfix分支名稱

創(chuàng)建Release分支

$ git checkout -b release/v0.1.0 develop

完成Release分支

git pull origin master
git checkout master
git merge --no-ff release/v0.1.0
git push

git checkout release/v0.1.0
git pull origin develop
git checkout develop
git merge --no-ff release/v0.1.0
git push

git branch -d release/v0.1.0

# If you pushed branch to origin:
git push origin --delete release/v0.1.0   


git tag -a v0.1.0 master
git push --tags

創(chuàng)建Hotfix分支

git checkout -b hotfix/v0.1.1 master    

完成Hotfix分支

git pull origin master
git checkout master
git merge --no-ff hotfix/v0.1.1
git push

git pull origin develop
git checkout develop
git merge --no-ff hotfix/v0.1.1
git push

git branch -d hotfix/v0.1.1

git tag -a v0.1.1 master
git push --tags
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容