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