Git代碼提交流程及git命令匯總(基礎(chǔ)篇)
基本了解
git命令是一些命令行工具的集合,它可以用來(lái)跟蹤,記錄文件的變動(dòng)。比如你可以進(jìn)行保存,比對(duì),分析,合并等等。這個(gè)過(guò)程被稱(chēng)之為版本控制。已經(jīng)有一系列的版本控制系統(tǒng),比如SVN, Mercurial, Perforce, CVS, Bitkeepe等等。
Git是分布式的,這意味著它并不依賴于中心服務(wù)器,任何一臺(tái)機(jī)器都可以有一個(gè)本地版本的控制系統(tǒng),我們稱(chēng)之為倉(cāng)庫(kù)。如果是多人協(xié)作的話,你需要還需要一個(gè)線上倉(cāng)庫(kù),用來(lái)同步信息。這就是GitHub, BitBucket的工作。
自己用Git有一段時(shí)間了,隨著項(xiàng)目越來(lái)越多,功能分支也隨之增加,從簡(jiǎn)單的基礎(chǔ)命令到隨心所欲,需要自己不斷地去嘗試總結(jié),下面來(lái)分享一下我的Git使用總結(jié)。
本章基礎(chǔ)篇主要講解一些Git代碼提交流程和Git基礎(chǔ)命令的使用。
一、Git版本分支管理
以下是一個(gè)比較基本的分支管理示范,每個(gè)公司的項(xiàng)目管理運(yùn)作不同,分支管理也有各自的特色,但萬(wàn)變不離其宗。
1) dev分支用于日常開(kāi)發(fā)
2) 當(dāng)有新版本需要發(fā)布時(shí),把dev代碼合并到release分支做集成測(cè)試,并等待發(fā)布
3) release分支進(jìn)入bug修復(fù)階段
4) 如果在release分支發(fā)現(xiàn)bug,那么在release分支進(jìn)行修改,并使用git cherry-pick把修復(fù)bug的commit合并到release分支上
(cherry-pick與merge不同,它的合并是以commit為單位而非整個(gè)branch)
完成后,release分支上所有代碼改動(dòng)(除版本號(hào)之外)都應(yīng)該已經(jīng)合到了dev分支上
5) release分支測(cè)試完成后,發(fā)布到線上環(huán)境
6) 并且打上tag,合并到master分支上
7) 如果在線上出現(xiàn)bug,那么在master上hot fix修復(fù)
8) 出現(xiàn)hot fix并修復(fù)后,需要重新把hot fix的代碼合并到dev以及release分支中去使代碼保持一致
二、Git基本命令匯
二、Git基本命令匯總
1.查看本地文件狀態(tài)
git status —-查看本地、本地倉(cāng)庫(kù)、緩存(stash)的文件修改狀態(tài)
—紅色 代表本地工作空間的文件修改
—藍(lán)色 代表提交到本地倉(cāng)庫(kù)中的文件(git add .)
2.切換版本/覆蓋當(dāng)前修改文件
git branch - 查看當(dāng)前版本
git branch -a 查看所有版本
git checkout XXX(版本名) —-切換到遠(yuǎn)程庫(kù)中XXX版本
git checkout filepath —覆蓋當(dāng)前修改的文件
git checkout . -覆蓋當(dāng)前所有修改文件
3.從遠(yuǎn)程庫(kù)獲取最新代碼
git remote -查看遠(yuǎn)程庫(kù)名稱(chēng)
git remote -v
git remote show XXX(遠(yuǎn)程庫(kù)名)
git fetch — 從remote端拉取最新代碼
git pull XXX(遠(yuǎn)程庫(kù)名) XXX(分支名) -把拉取的最新代碼跟當(dāng)前工作空間合并
git rebase —把遠(yuǎn)程拉回的代碼和本地合并
4.緩存本地代碼
當(dāng)要切換到其它版本時(shí),想保存在當(dāng)前版本修改的文件:在切換前做
git stash —-把本地修改過(guò)不需要提交的文件放入緩存
git checkout XXX(版本) —切換庫(kù)版本
切回原來(lái)的庫(kù),把文件從stash緩存中拿出來(lái)
git stash pop — 從緩存中拉出
5.提交遠(yuǎn)程庫(kù)
git add .
git commit -m ''
git remote 查看遠(yuǎn)程關(guān)聯(lián)名稱(chēng)
git push remote的名稱(chēng) 本地master
6.處理沖突
git fetch 拉取最新工程
git pull XXX(遠(yuǎn)程庫(kù)名) XXX(分支名) -把拉取的最新代碼跟當(dāng)前工作空間合并
沖突產(chǎn)生后,去工作空間修改后,>>>新代碼===老代碼<<<,保留最終代碼,刪除提示符,重新提交。
7.把本次提交的內(nèi)容提交到其他分支(比如發(fā)布時(shí)bug的修改)
git cherry-pick commitId
8.建議執(zhí)行順序
git status 查看修改狀態(tài)
git checkout filename 放棄某文件的修改。
git stash 儲(chǔ)存修改
git fetch 拉取最新工程
git rebase 與本地分支合并
git stash pop 彈出儲(chǔ)存文件,此時(shí)新文件可能會(huì)與你的文件產(chǎn)生沖突,解決沖突。
git add filename 添加某個(gè)修改文件
git add . 提交所有加點(diǎn)
git reset HEAD filename 回滾指定文件,回滾所有加點(diǎn):"git reset HEAD . "
git commit -m''
git push 本地remote遠(yuǎn)程分支名,本地分支名
例我的本地分支為master 遠(yuǎn)程remote 別名為 origin 則提交為git push origin master
9.切換HEAD
git reflog --查看HEAD記錄
git reset --hard HEAD^ //切換到之前一個(gè)HEAD
git reset --hard fad4462 // 切換到某個(gè)已經(jīng)回退的HEAD
10.刪除 local branch
git branch -d <branch_name>
總結(jié)
以上所述是小編給大家介紹的Git代碼提交流程及git命令匯總(基礎(chǔ)篇),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
bash 循環(huán)中變量作用范圍的問(wèn)題分析
大家在bash編寫(xiě)中,經(jīng)常需要用到循環(huán),但循環(huán)中變量作用范圍的問(wèn)題有些朋友不是很懂,這里簡(jiǎn)單分享下,方便需要的朋友2013-01-01
shell腳本實(shí)現(xiàn)實(shí)時(shí)檢測(cè)文件變更
這篇文章主要介紹了shell腳本實(shí)現(xiàn)實(shí)時(shí)檢測(cè)文件變更,本文直接給出實(shí)現(xiàn)代碼和使用方法,以及svn下的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-05-05
淺析Linux系統(tǒng)下安裝wetty和使用說(shuō)明
本篇文章主要給大家介紹linux系統(tǒng)下安裝wetty和使用說(shuō)明,以及l(fā)inux tty命令學(xué)習(xí)總結(jié),感興趣的朋友跟著小編一起學(xué)習(xí)吧2015-10-10
Linux更新Python版本及修改python默認(rèn)版本的方法
很多情況下拿到的服務(wù)器python版本很低,需要自己動(dòng)手更改默認(rèn)python版本,但是有好多朋友都被這個(gè)問(wèn)題難倒了,接下來(lái),通過(guò)本篇文章給大家介紹linux更新Python版本及修改默認(rèn)版本的方法,感興趣的朋友一起學(xué)習(xí)吧2015-12-12
淺析Shell腳本中的條件判斷[?]與[[?]]的區(qū)別
在編寫(xiě)?Shell?腳本時(shí),條件判斷是控制腳本流程的重要手段,Shell?提供了多種方式來(lái)進(jìn)行條件判斷,其中[?]和[[?]]是兩種常見(jiàn)的條件測(cè)試表達(dá)式,下面我們就來(lái)看看兩者的區(qū)別吧2024-12-12
shell 生成隨機(jī)數(shù)的實(shí)現(xiàn)方法總結(jié)
這篇文章主要介紹了 shell 生成隨機(jī)數(shù)的實(shí)現(xiàn)方法總結(jié)的相關(guān)資料,希望通過(guò)本能幫助到大家,讓大家徹底掌握這幾種隨機(jī)數(shù)的方法,需要的朋友可以參考下2017-09-09

