GIT分支管理和常用命令

分支管理

分支管理

master 分支
不能往master 分支上提交代碼鳞陨,只能在該分支上進行代碼合并操作婴渡,例如將其它分支的代碼合并到 Master 分支上纤控。
develop 分支
我們?nèi)粘i_發(fā)中的代碼需要從 master 分支拉一條 develop 分支出來挟裂,該分支所有人都能訪問属愤,但一般情況下号胚,我們也不會直接在該分支上提交代碼籽慢,代碼同樣是從其它分支合并到 develop 分支上去。
feature 分支
當(dāng)我們需要開發(fā)某個特性時猫胁,需要從 develop 分支拉出一條 feature 分支箱亿,例如 feature/update_mq 與 feature/update_netty,在這些分支上并行地開發(fā)具體特性弃秆。
release 分支
當(dāng)特性開發(fā)完畢后届惋,我們決定需要發(fā)布某個版本了,此時需要從 develop 分支上拉出一條 release 分支菠赚,例如 release-1.0.0脑豹,并將需要發(fā)布的特性從相關(guān) feature 分支一同合并到 release 分支上,隨后將針對 release 分支推送到測試環(huán)境衡查,測試工程師在該分支上做功能測試瘩欺,開發(fā)工程師在該分支上修改 bug。待測試工程師無法找到任何 bug 時,我們可將該 release 分支部署到預(yù)發(fā)環(huán)境俱饿,再次驗證以后歌粥,均無任何 bug,此時可將 release 分支部署到生產(chǎn)環(huán)境拍埠。
tag
待上線完成后失驶,將 release 分支上的代碼同時合并到 develop 分支與 master 分支,并在 master 分支上打一個 tag枣购,例如 v1.0.0嬉探。
hotfix
當(dāng)生產(chǎn)環(huán)境發(fā)現(xiàn) bug 時,我們需要從對應(yīng)的 tag 上(例如 v1.0.0)拉出一條 hotfix 分支(例如 hotfix-1.0.1)棉圈,并在該分支上做 bug 修復(fù)甲馋。待 bug 完全修復(fù)后,需將 hotfix 分支上的代碼同時合并到 develop 分支與 master 分支迄损。同時在master上打上tag定躏,v1.0.1。
版本號
對于版本號我們也有要求芹敌,格式為:x.y.z痊远,其中,x 用于有重大重構(gòu)時才會升級氏捞,y 用于有新的特性發(fā)布時才會升級碧聪,z 用于修改了某個 bug 后才會升級。
個人分支
個人分支下可以建目錄液茎,例如: xiaoguai/dev1, xiaoguai/dev2

常用命令

git相關(guān)配置

# 安裝完Git后第一件要做的事逞姿,設(shè)置用戶信息(global可換成local在單獨項目生效):
git config --global user.name "用戶名" # 設(shè)置用戶名
git config --global user.email "用戶郵箱"   #設(shè)置郵箱
git config --global user.name   # 查看用戶名是否配置成功
git config --global user.email   # 查看郵箱是否配置

# 其他查看配置相關(guān)
git config --global --list  # 查看全局設(shè)置相關(guān)參數(shù)列表
git config --local --list # 查看本地設(shè)置相關(guān)參數(shù)列表
git config --system --list # 查看系統(tǒng)配置參數(shù)列表
git config --list  # 查看所有Git的配置(全局+本地+系統(tǒng))
git config --global color.ui true //顯示git相關(guān)顏色

從遠程倉庫克隆項目到本地

git clone git@github.com:git帳號名/倉庫名.git

將文件添加到倉庫

git add 文件名 # 將工作區(qū)的某個文件添加到暫存區(qū)   
git add . # 將當(dāng)前工作區(qū)的所有文件都加入暫存區(qū)

將暫存區(qū)文件提交到本地倉庫

git commit -m "提交說明" # 將暫存區(qū)內(nèi)容提交到本地倉庫
git commit -a -m "提交說明" # 跳過緩存區(qū)操作,直接把工作區(qū)內(nèi)容提交到本地倉庫

查看倉庫當(dāng)前狀態(tài)

git status

比較文件異同

git diff # 工作區(qū)與暫存區(qū)的差異
git diff 分支名 #工作區(qū)與某分支的差異捆等,遠程分支這樣寫:remotes/origin/分支名
git diff HEAD  # 工作區(qū)與HEAD指針指向的內(nèi)容差異
git diff 提交id 文件路徑 # 工作區(qū)某文件當(dāng)前版本與歷史版本的差異
git diff --stage # 工作區(qū)文件與上次提交的差異
git diff 版本TAG # 查看從某個版本后都改動內(nèi)容
git diff 分支A 分支B # 比較從分支A和分支B的差異(也支持比較兩個TAG)
git diff 分支A...分支B # 比較兩分支在分開后各自的改動

查看歷史記錄

git log # 查看所有commit記錄(SHA-A校驗和滞造,作者名稱,郵箱栋烤,提交時間谒养,提交說明)
git log -p -次數(shù) # 查看最近多少次的提交記錄
git log fileName # 查看某文件的修改記錄,找背鍋專用

代碼回滾

git reset HEAD^ # 恢復(fù)成上次提交的版本
git reset HEAD^^ # 恢復(fù)成上上次提交的版本明郭,就是多個^买窟,以此類推或用~次數(shù)

同步遠程倉庫

git push -u origin master

刪除版本庫文件

git rm 文件名

創(chuàng)建分支

git checkout -b dev
-b表示創(chuàng)建并切換分支
上面一條命令相當(dāng)于一面的二條:
git branch dev # 創(chuàng)建分支
git checkout dev # 切換分支

查看分支

git branch

合并分支

git merge dev # 用于合并指定分支到當(dāng)前分支
git merge --no-ff -m "merge with no-ff" dev
# 加上--no-ff參數(shù)就可以用普通模式合并,合并后的歷史有分支薯定,能看出來曾經(jīng)做過合并

盡量使用rebase代替merge始绍,好處主要有兩個:
1)rebase操作可以把本地未push的分叉提交歷史整理成直線;
2)rebase的目的是使得我們在查看歷史提交的變化時更容易话侄,因為分叉的提交需要三方對比亏推。

刪除分支

git branch -d dev

查看分支合并圖

git log --graph --pretty=oneline --abbrev-commit

查看遠程庫信息

git remote # -v 顯示更詳細的信息

撤消某次提交

git revert HEAD # 撤銷最近的一個提交
git revert 版本號 # 撤銷某次commit

拉取遠程分支到本地倉庫

git checkout -b 本地分支 遠程分支 # 會在本地新建分支苛败,并自動切換到該分支
git fetch origin 遠程分支:本地分支 # 會在本地新建分支,但不會自動切換径簿,還需checkout
git branch --set-upstream 本地分支 遠程分支 # 建立本地分支與遠程分支的鏈接

標(biāo)簽命令

git tag 標(biāo)簽 # 打標(biāo)簽命令罢屈,默認為HEAD
git tag # 顯示所有標(biāo)簽
git tag 標(biāo)簽 版本號 # 給某個commit版本添加標(biāo)簽
git show 標(biāo)簽 # 顯示某個標(biāo)簽的詳細信息

同步遠程倉庫更新

git fetch  origin master # 從遠程獲取最新的到本地,首先從遠程的origin的master主分支下載最新的版本到origin/master分支上篇亭,然后比較本地的master分支和origin/master分支的差別缠捌,最后進行合并。

git fetch比git pull更加安全

盡量不要用命令(也看個人習(xí)慣)

1)IntelliJ IDEA下配置git
2)Sourcetree 可簡化您與 Mercurial 和 Git 存儲庫的交互译蒂,讓您集中精力編寫代碼曼月。通過 Sourcetree 簡單的 Git 圖形用戶界面查看和管理您的存儲庫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柔昼,一起剝皮案震驚了整個濱河市哑芹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捕透,老刑警劉巖聪姿,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乙嘀,居然都是意外死亡末购,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門虎谢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盟榴,“玉大人,你說我怎么就攤上這事婴噩∏娉。” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵几莽,是天一觀的道長迅办。 經(jīng)常有香客問我,道長银觅,這世上最難降的妖魔是什么礼饱? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮究驴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匀伏。我一直安慰自己洒忧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布够颠。 她就那樣靜靜地躺著熙侍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛉抓,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天庆尘,我揣著相機與錄音,去河邊找鬼巷送。 笑死驶忌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的笑跛。 我是一名探鬼主播付魔,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼飞蹂!你這毒婦竟也來了几苍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤陈哑,失蹤者是張志新(化名)和其女友劉穎妻坝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惊窖,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡惠勒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了爬坑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纠屋。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖盾计,靈堂內(nèi)的尸體忽然破棺而出售担,到底是詐尸還是另有隱情,我是刑警寧澤署辉,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布族铆,位于F島的核電站,受9級特大地震影響哭尝,放射性物質(zhì)發(fā)生泄漏哥攘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一材鹦、第九天 我趴在偏房一處隱蔽的房頂上張望逝淹。 院中可真熱鬧,春花似錦桶唐、人聲如沸栅葡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽欣簇。三九已至规脸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間熊咽,已是汗流浹背莫鸭。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留横殴,地道東北人被因。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像滥玷,于是被迫代替她去往敵國和親氏身。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容