GIT的工程管理和簡(jiǎn)單使用_第1頁(yè)
GIT的工程管理和簡(jiǎn)單使用_第2頁(yè)
GIT的工程管理和簡(jiǎn)單使用_第3頁(yè)
GIT的工程管理和簡(jiǎn)單使用_第4頁(yè)
GIT的工程管理和簡(jiǎn)單使用_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

GIT的工程管理和簡(jiǎn)單使用孫振銀20150316目錄GIT簡(jiǎn)介GIT安裝配置GIT基本使用GIT簡(jiǎn)介L(zhǎng)inus花了兩周時(shí)間自己用C寫(xiě)了一個(gè)分布式版本控制系統(tǒng),這就是Git!一個(gè)月之內(nèi),Linux系統(tǒng)的源碼已經(jīng)由Git管理了!Linus堅(jiān)定地反對(duì)CVS和SVN,這些集中式的版本控制系統(tǒng)不但速度慢,而且必須聯(lián)網(wǎng)才能使用。有一些商用的版本控制系統(tǒng),雖然比CVS、SVN好用,但那是付費(fèi)的,和Linux的開(kāi)源精神不符。集中式版本控制系統(tǒng):

CVS、SVN、IBM的ClearCase、微軟的VSS分布式版本控制系統(tǒng):除了Git以及促使Git誕生的BitKeeper外,還有類(lèi)似Git的Mercurial和Bazaar等集中式vs分布式在分布式管理系統(tǒng)中,你可以在自己本地磁盤(pán)上擁有代碼庫(kù)的完整拷貝,對(duì)代碼庫(kù)的操作不需要通過(guò)網(wǎng)絡(luò)向中央服務(wù)器進(jìn)行請(qǐng)求,因此速度會(huì)非常的快.特別是你在進(jìn)行查看日志,與舊版本代碼進(jìn)行比較或者其它需要完整代碼庫(kù)的操作時(shí),這種速度上的改善會(huì)非常明顯.對(duì)于集中式的系統(tǒng),在局域網(wǎng)內(nèi)你也許只會(huì)覺(jué)得有點(diǎn)慢,但如果當(dāng)你工作在一個(gè)分布式的項(xiàng)目中,你的代碼庫(kù)在另一個(gè)大洲的時(shí)候,這就會(huì)是非常大的問(wèn)題了.如果你經(jīng)常在四處奔走,無(wú)法隨時(shí)與代碼庫(kù)建立網(wǎng)絡(luò)連接,那么一個(gè)分布式的管理系統(tǒng)會(huì)使你可以隨時(shí)與代碼庫(kù)一起工作.你可以隨時(shí)隨地提交你的工作,瀏覽歷史,并且比較版本間的差異.分布式系統(tǒng)(git)與集中式系統(tǒng)(svn)的幾個(gè)重要的區(qū)別:本地開(kāi)發(fā)不需要與中央服務(wù)器進(jìn)行通信,因此一般的操作(如提交,查看歷史和還原修改等)的執(zhí)行速度非???只有在向其它端點(diǎn)push代碼更改或者從其它端點(diǎn)pull代碼更改的時(shí)候才會(huì)需要進(jìn)行通信.每一份代碼拷貝都可以作為代碼庫(kù)及其更改歷史的一份遠(yuǎn)程備份,這就為數(shù)據(jù)丟失提供了天然的保護(hù).極其強(qiáng)大的分支管理Git有一個(gè)"clean"命令.SVN急需這個(gè)命令.Git有一個(gè)"bisect"命令.SVN會(huì)在每一個(gè)文件夾中創(chuàng)建一個(gè).svn目錄.而Git只會(huì)創(chuàng)建一個(gè).git目錄.在SVN中,每一個(gè)文件或文件夾都可能來(lái)自于一個(gè)不同的版本或是branch.這很可能會(huì)引起混亂.無(wú)論你什么時(shí)候刪除了點(diǎn)東西,你都需要告訴SVN一聲.Git會(huì)自己發(fā)現(xiàn)并處理.在Git中,忽略語(yǔ)法很簡(jiǎn)單,例如*.pyc,它會(huì)被應(yīng)用到所有的子文件夾.當(dāng)然,如果你只想忽略某個(gè)特定文件夾中的內(nèi)容,也是可以的.在SVN中,很難有什么方法可以將一個(gè)忽略模式應(yīng)用到所有的子文件夾中.Git中忽略設(shè)置是"private"的,這些設(shè)置包含在.git/info/exclude中,并不會(huì)影響到其他人.Git跟蹤的是內(nèi)容而不是文件,它對(duì)于重命名文件的合并有更好的支持.Git代碼庫(kù)的大小相對(duì)于SVN來(lái)說(shuō)小很多.目前Git不支持代碼庫(kù)的部分checkout/clone,但是正在開(kāi)發(fā)中,而且已經(jīng)有submodule方面的支持.SVN則可以根據(jù)需要只從代碼庫(kù)中checkout某個(gè)子文件夾.SVN的版本號(hào)更短并且可以預(yù)知,而Git的版本號(hào)則是40位的16進(jìn)制數(shù)字串.GIT安裝配置如何訪問(wèn)gerrit和下載git代碼GIT基本使用初始化一個(gè)Git倉(cāng)庫(kù),使用gitinit命令。添加文件到Git倉(cāng)庫(kù),分兩步:第一步,使用命令gitadd<file>,注意,可反復(fù)多次使用,添加多個(gè)文件;第二步,使用命令gitcommit,完成。要隨時(shí)掌握工作區(qū)的狀態(tài),使用gitstatus命令。如果gitstatus告訴你有文件被修改過(guò),用gitdiff可以查看修改內(nèi)容版本回退gitlog命令顯示從最近到最遠(yuǎn)的提交日志,如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上?--pretty=oneline參數(shù):Git必須知道當(dāng)前版本是哪個(gè)版本,在Git中,用HEAD表示當(dāng)前版本,也就是最新的提交的版本,上一個(gè)版本就是HEAD^,上上一個(gè)版本就是HEAD^^,當(dāng)然往上100個(gè)版本寫(xiě)100個(gè)^比較容易數(shù)不過(guò)來(lái),所以寫(xiě)成HEAD~100HEAD指向的版本就是當(dāng)前版本,因此,Git允許我們?cè)诎姹镜臍v史之間穿梭,使用命令gitreset--hardcommit_id。穿梭前,用gitlog可以查看提交歷史,以便確定要回退到哪個(gè)版本。要重返未來(lái),用gitreflog查看命令歷史,以便確定要回到未來(lái)的哪個(gè)版本。工作區(qū)和暫存區(qū)前面講了我們把文件往Git版本庫(kù)里添加的時(shí)候,是分兩步執(zhí)行的:第一步是用gitadd把文件添加進(jìn)去,實(shí)際上就是把文件修改添加到暫存區(qū)stage;第二步是用gitcommit提交更改,實(shí)際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支。撤銷(xiāo)修改命令gitcheckout--readme.txt意思就是,把readme.txt文件在工作區(qū)的修改全部撤銷(xiāo),這里有兩種情況:一種是readme.txt自修改后還沒(méi)有被放到暫存區(qū),現(xiàn)在,撤銷(xiāo)修改就回到和版本庫(kù)一模一樣的狀態(tài);一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷(xiāo)修改就回到添加到暫存區(qū)后的狀態(tài)??傊?,就是讓這個(gè)文件回到最近一次gitcommit或gitadd時(shí)的狀態(tài)。gitcheckout--file命令中的--很重要,沒(méi)有--,就變成了“創(chuàng)建一個(gè)新分支”的命令,我們?cè)诤竺娴姆种Ч芾碇袝?huì)再次遇到gitcheckout命令。Git同樣告訴我們,用命令gitresetHEADfile可以把暫存區(qū)的修改撤銷(xiāo)掉(unstage),重新放回工作區(qū)場(chǎng)景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容,想直接丟棄工作區(qū)的修改時(shí),用命令gitcheckout--file。場(chǎng)景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí),想丟棄修改,分兩步,第一步用命令gitresetHEADfile,就回到了場(chǎng)景1,第二步按場(chǎng)景1操作。場(chǎng)景3:已經(jīng)提交了不合適的修改到版本庫(kù)時(shí),想要撤銷(xiāo)本次提交,參考版本回退一節(jié),不過(guò)前提是沒(méi)有推送到遠(yuǎn)程庫(kù)。分支管理Git鼓勵(lì)大量使用分支:查看分支:gitbranch創(chuàng)建分支:gitbranch<name>切換分支:gitcheckout<name>創(chuàng)建+切換分支:gitcheckout-b<name>合并某分支到當(dāng)前分支:gitmerge<name>刪除分支:gitbranch-d<name>當(dāng)Git無(wú)法自動(dòng)合并分支時(shí),就必須首先解決沖突。解決沖突后,再提交,合并完成。用gitlog--graph命令可以看到分支合并圖。分支策略:在實(shí)際開(kāi)發(fā)中,我們應(yīng)該按照幾個(gè)基本原則進(jìn)行分支管理:首先,master分支應(yīng)該是非常穩(wěn)定的,也就是僅用來(lái)發(fā)布新版本,平時(shí)不能在上面干活;那在哪干活呢?干活都在dev分支上,也就是說(shuō),dev分支是不穩(wěn)定的,到某個(gè)時(shí)候,比如1.0版本發(fā)布時(shí),再把dev分支合并到master上,在master分支發(fā)布1.0版本;你和你的小伙伴們每個(gè)人都在dev分支上干活,每個(gè)人都有自己的分支,時(shí)不時(shí)地往dev分支上合并就可以了。所以,團(tuán)隊(duì)合作的分支看起來(lái)就像這樣:Bug分支管理修復(fù)bug時(shí),我們會(huì)通過(guò)創(chuàng)建新的bug分支進(jìn)行修復(fù),然后合并,最后刪除;當(dāng)手頭工作沒(méi)有完成時(shí),先把工作現(xiàn)場(chǎng)gitstash一下,然后去修復(fù)bug,修復(fù)后,再gitstashpop,回到工作現(xiàn)場(chǎng)。一是用gitstashapply恢復(fù),但是恢復(fù)后,stash內(nèi)容并不刪除,你需要用gitstashdrop來(lái)刪除;另一種方式是用gitstashpop,恢復(fù)的同時(shí)把stash內(nèi)容也刪了:你可以多次stash,恢復(fù)的時(shí)候,先用gitstashlist查看,然后恢復(fù)指定的stash,用命令:gitstashapplystash@{0}多人協(xié)作查看遠(yuǎn)程庫(kù)信息,使用gitremote-v;本地新建的分支如果不推送到遠(yuǎn)程,對(duì)其他人就是不可見(jiàn)的;從本地推送分支,使用gitpushoriginbranch-name,如果推送失敗,先用gitpull抓取遠(yuǎn)程的新提交;在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支,使用gitcheckout-bbranch-nameorigin/branch-name,本地和遠(yuǎn)程分支的名稱(chēng)最好一致;建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián),使用gitbranch--set-upstreambranch-nameorigin/branch-name;從遠(yuǎn)程抓取分支,使用gitpull,如果有沖突,要先處理沖突。標(biāo)簽管理創(chuàng)建標(biāo)簽:命令gittag<name>用于新建一個(gè)標(biāo)簽,默認(rèn)為HEAD,也可以指定一個(gè)commitid;gittag-a<tagname>-m"blablabla..."可以指定標(biāo)簽信息;gittag-s<tagname>-m"bla

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論