Git 基礎
概念
倉庫
使用Git管理自己的文件,至少一個本地倉庫,如果需要在外部網絡共享需要使用遠程倉庫。
本地倉庫
本地倉庫指的是自己電腦里的倉庫,只用于管理自己文件的版本。
遠程倉庫
用于多人的項目管理,使用遠程倉庫來同步本地倉庫。
分支
一個Git版本庫,至少需要一個分支,像樹一個,需要一個主干分支,一般Git版本庫中以
Master
分支做為主干分支。
標簽
發布一個新的版本,需要給新發布的版本打標簽,用于標識每個版本的版本號。
沖突
在多人開發的項目中,同一個文件同時被多人修改,在這種情況下,合并會起沖突,解決沖突即可合并文件。
操作
倉庫
創建本地倉庫
$ git init
在當前的項目中初始化一個git本地倉庫,刪除本地倉庫,只需要刪除目錄即可。
查看遠程倉庫
$ git remote
顯示當前目錄的本地倉庫關聯的遠程倉庫名稱
添加遠程倉庫
$ git remote add origin ssh://git@git.yunalading.com:220/jabber/test.git
添加名稱為
origin
的遠程倉庫地址為ssh://git@git.yunalading.com:220/jabber/test.git
刪除遠程倉庫
$ git remote remove origin
刪除名稱為
origin
的遠程倉庫
更新本地倉庫
fetch
$ git fetch [遠程倉庫名稱] [遠程倉庫中的分支]
獲取遠程倉庫的所有分支更新。git fetch:相當于是從遠程獲取最新版本到本地,不會自動merge
pull
$ git pull [遠程倉庫名稱] [遠程倉庫中的分支]
git pull:相當于是從遠程獲取最新版本并merge到本地
發布到遠程倉庫
$ git push
push當前分支,到對應的
upstream
的分支
中。
upstream
$ git push -u 遠程倉庫名稱 [遠程倉庫中的分支]
上游,第一次
push
指定了upstream
之后,以后在push
、fetch
、pull
的時候,即可省略遠程倉庫名稱
和分支
,在push
的時候使用-u
來設置upstream
分支(Branch)
分支是主干的支干,用于做特定的事情。
創建分支
$ git branch 分支名稱
基于當前分支創建一個新的分支,一般需要先checkout到Base分支,如
git checkout develop
,git branch test
先后執行兩個命令,會基于develop
分支創建test
分支
查看分支
$ git branch
切換分支
創建并切換
$ git checkout -b 分支名稱
基于當前分支創建一個新的分支,使用之前需要
checkout
到Base分支。
切換到已有分支
$ git checkout 分支名稱
刪除分支
刪除本地分支
$ git branch -d 分支名稱
刪除分支的時候需要
checkout
到其他的分支上操作,分支正在使用不能被刪除。
刪除遠程分支
git push 遠程倉庫 -d 分支名稱
合并分支
$ git merge 分支名稱
合并分支到當前分支。
基變
git rebase 分支名稱
rebase為原分支上每一個提交創建一個新的提交,重寫了項目歷史,并且不會帶來合并提交。用于整理項目的提交歷史。
狀態查看
$ git status
分支合并之后使用此命令可以查看哪些文件起沖突
日志
$ git log
查看提交記錄
發布分支
$ git push
push當前分支,到對應的
upstream
的分支
中。git push --all
發布所有分支到遠程庫
upstream
$ git push -u 遠程倉庫名稱 [遠程倉庫中的分支]
上游,第一次
push
指定了upstream
之后,以后在push
、fetch
、pull
的時候,即可省略遠程倉庫名稱
和分支
,在push
的時候使用-u
來設置upstream
標簽(Tag)
創建標簽
$ git tag -a 標簽名稱 [分支名稱]
如果沒有填寫分支名稱默認是當前分支,在git flow中只允許創建master分支的標簽
查看標簽
$ git tag
刪除標簽
刪除本地標簽
$ git tag -d 標簽名稱
刪除遠程標簽
$ git push 遠程倉庫名稱 -d tag 標簽名稱
如果本地已經刪除,可以使用
git push [遠程倉庫名稱] :[標簽名稱]
發布標簽
$ git push --tags
Git flow工作流程
創建Develop分支
$ git branch develop
$ git push -u origin develop
創建Feature分支
$ git checkout -b feature/特性分支名稱 develop
$ git push -u 遠程倉庫名稱 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
創建Bugfix分支
$ git checkout -b bugfix/Bugfix分支名稱 develop
$ git push -u 遠程倉庫名稱 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分支名稱
創建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
創建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