版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
GIT的工程管理和簡單使用孫振銀20150316目錄GIT簡介GIT安裝配置GIT基本使用GIT簡介Linus花了兩周時間自己用C寫了一個分布式版本控制系統(tǒng),這就是Git!一個月之內(nèi),Linux系統(tǒng)的源碼已經(jīng)由Git管理了!Linus堅定地反對CVS和SVN,這些集中式的版本控制系統(tǒng)不但速度慢,而且必須聯(lián)網(wǎng)才能使用。有一些商用的版本控制系統(tǒng),雖然比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。集中式版本控制系統(tǒng):
CVS、SVN、IBM的ClearCase、微軟的VSS分布式版本控制系統(tǒng):除了Git以及促使Git誕生的BitKeeper外,還有類似Git的Mercurial和Bazaar等集中式vs分布式在分布式管理系統(tǒng)中,你可以在自己本地磁盤上擁有代碼庫的完整拷貝,對代碼庫的操作不需要通過網(wǎng)絡(luò)向中央服務(wù)器進行請求,因此速度會非常的快.特別是你在進行查看日志,與舊版本代碼進行比較或者其它需要完整代碼庫的操作時,這種速度上的改善會非常明顯.對于集中式的系統(tǒng),在局域網(wǎng)內(nèi)你也許只會覺得有點慢,但如果當(dāng)你工作在一個分布式的項目中,你的代碼庫在另一個大洲的時候,這就會是非常大的問題了.如果你經(jīng)常在四處奔走,無法隨時與代碼庫建立網(wǎng)絡(luò)連接,那么一個分布式的管理系統(tǒng)會使你可以隨時與代碼庫一起工作.你可以隨時隨地提交你的工作,瀏覽歷史,并且比較版本間的差異.分布式系統(tǒng)(git)與集中式系統(tǒng)(svn)的幾個重要的區(qū)別:本地開發(fā)不需要與中央服務(wù)器進行通信,因此一般的操作(如提交,查看歷史和還原修改等)的執(zhí)行速度非???只有在向其它端點push代碼更改或者從其它端點pull代碼更改的時候才會需要進行通信.每一份代碼拷貝都可以作為代碼庫及其更改歷史的一份遠(yuǎn)程備份,這就為數(shù)據(jù)丟失提供了天然的保護.極其強大的分支管理Git有一個"clean"命令.SVN急需這個命令.Git有一個"bisect"命令.SVN會在每一個文件夾中創(chuàng)建一個.svn目錄.而Git只會創(chuàng)建一個.git目錄.在SVN中,每一個文件或文件夾都可能來自于一個不同的版本或是branch.這很可能會引起混亂.無論你什么時候刪除了點東西,你都需要告訴SVN一聲.Git會自己發(fā)現(xiàn)并處理.在Git中,忽略語法很簡單,例如*.pyc,它會被應(yīng)用到所有的子文件夾.當(dāng)然,如果你只想忽略某個特定文件夾中的內(nèi)容,也是可以的.在SVN中,很難有什么方法可以將一個忽略模式應(yīng)用到所有的子文件夾中.Git中忽略設(shè)置是"private"的,這些設(shè)置包含在.git/info/exclude中,并不會影響到其他人.Git跟蹤的是內(nèi)容而不是文件,它對于重命名文件的合并有更好的支持.Git代碼庫的大小相對于SVN來說小很多.目前Git不支持代碼庫的部分checkout/clone,但是正在開發(fā)中,而且已經(jīng)有submodule方面的支持.SVN則可以根據(jù)需要只從代碼庫中checkout某個子文件夾.SVN的版本號更短并且可以預(yù)知,而Git的版本號則是40位的16進制數(shù)字串.GIT安裝配置如何訪問gerrit和下載git代碼GIT基本使用初始化一個Git倉庫,使用gitinit命令。添加文件到Git倉庫,分兩步:第一步,使用命令gitadd<file>,注意,可反復(fù)多次使用,添加多個文件;第二步,使用命令gitcommit,完成。要隨時掌握工作區(qū)的狀態(tài),使用gitstatus命令。如果gitstatus告訴你有文件被修改過,用gitdiff可以查看修改內(nèi)容版本回退gitlog命令顯示從最近到最遠(yuǎn)的提交日志,如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上?--pretty=oneline參數(shù):Git必須知道當(dāng)前版本是哪個版本,在Git中,用HEAD表示當(dāng)前版本,也就是最新的提交的版本,上一個版本就是HEAD^,上上一個版本就是HEAD^^,當(dāng)然往上100個版本寫100個^比較容易數(shù)不過來,所以寫成HEAD~100HEAD指向的版本就是當(dāng)前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令gitreset--hardcommit_id。穿梭前,用gitlog可以查看提交歷史,以便確定要回退到哪個版本。要重返未來,用gitreflog查看命令歷史,以便確定要回到未來的哪個版本。工作區(qū)和暫存區(qū)前面講了我們把文件往Git版本庫里添加的時候,是分兩步執(zhí)行的:第一步是用gitadd把文件添加進去,實際上就是把文件修改添加到暫存區(qū)stage;第二步是用gitcommit提交更改,實際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支。撤銷修改命令gitcheckout--readme.txt意思就是,把readme.txt文件在工作區(qū)的修改全部撤銷,這里有兩種情況:一種是readme.txt自修改后還沒有被放到暫存區(qū),現(xiàn)在,撤銷修改就回到和版本庫一模一樣的狀態(tài);一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)??傊褪亲屵@個文件回到最近一次gitcommit或gitadd時的狀態(tài)。gitcheckout--file命令中的--很重要,沒有--,就變成了“創(chuàng)建一個新分支”的命令,我們在后面的分支管理中會再次遇到gitcheckout命令。Git同樣告訴我們,用命令gitresetHEADfile可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū)場景1:當(dāng)你改亂了工作區(qū)某個文件的內(nèi)容,想直接丟棄工作區(qū)的修改時,用命令gitcheckout--file。場景2:當(dāng)你不但改亂了工作區(qū)某個文件的內(nèi)容,還添加到了暫存區(qū)時,想丟棄修改,分兩步,第一步用命令gitresetHEADfile,就回到了場景1,第二步按場景1操作。場景3:已經(jīng)提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節(jié),不過前提是沒有推送到遠(yuǎn)程庫。分支管理Git鼓勵大量使用分支:查看分支:gitbranch創(chuàng)建分支:gitbranch<name>切換分支:gitcheckout<name>創(chuàng)建+切換分支:gitcheckout-b<name>合并某分支到當(dāng)前分支:gitmerge<name>刪除分支:gitbranch-d<name>當(dāng)Git無法自動合并分支時,就必須首先解決沖突。解決沖突后,再提交,合并完成。用gitlog--graph命令可以看到分支合并圖。分支策略:在實際開發(fā)中,我們應(yīng)該按照幾個基本原則進行分支管理:首先,master分支應(yīng)該是非常穩(wěn)定的,也就是僅用來發(fā)布新版本,平時不能在上面干活;那在哪干活呢?干活都在dev分支上,也就是說,dev分支是不穩(wěn)定的,到某個時候,比如1.0版本發(fā)布時,再把dev分支合并到master上,在master分支發(fā)布1.0版本;你和你的小伙伴們每個人都在dev分支上干活,每個人都有自己的分支,時不時地往dev分支上合并就可以了。所以,團隊合作的分支看起來就像這樣:Bug分支管理修復(fù)bug時,我們會通過創(chuàng)建新的bug分支進行修復(fù),然后合并,最后刪除;當(dāng)手頭工作沒有完成時,先把工作現(xiàn)場gitstash一下,然后去修復(fù)bug,修復(fù)后,再gitstashpop,回到工作現(xiàn)場。一是用gitstashapply恢復(fù),但是恢復(fù)后,stash內(nèi)容并不刪除,你需要用gitstashdrop來刪除;另一種方式是用gitstashpop,恢復(fù)的同時把stash內(nèi)容也刪了:你可以多次stash,恢復(fù)的時候,先用gitstashlist查看,然后恢復(fù)指定的stash,用命令:gitstashapplystash@{0}多人協(xié)作查看遠(yuǎn)程庫信息,使用gitremote-v;本地新建的分支如果不推送到遠(yuǎn)程,對其他人就是不可見的;從本地推送分支,使用gitpushoriginbranch-name,如果推送失敗,先用gitpull抓取遠(yuǎn)程的新提交;在本地創(chuàng)建和遠(yuǎn)程分支對應(yīng)的分支,使用gitcheckout-bbranch-nameorigin/branch-name,本地和遠(yuǎn)程分支的名稱最好一致;建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián),使用gitbranch--set-upstreambranch-nameorigin/branch-name;從遠(yuǎn)程抓取分支,使用gitpull,如果有沖突,要先處理沖突。標(biāo)簽管理創(chuàng)建標(biāo)簽:命令gittag<name>用于新建一個標(biāo)簽,默認(rèn)為HEAD,也可以指定一個commitid;gittag-a<tagname>-m"blablabla..."可以指定標(biāo)簽信息;gittag-s<tagname>-m"bla
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 消防安全滅火器培訓(xùn)
- 2024年開學(xué)初國旗下講話稿例文(4篇)
- 內(nèi)貿(mào)業(yè)務(wù)員工作職責(zé)與工作任務(wù)范文(2篇)
- 2024年初中校長開學(xué)典禮講話例文(2篇)
- 2021年10月廣西中共南寧市青秀區(qū)委員會組織部公開招聘行政輔助人員強化練習(xí)題(一)
- 2024年明年工作計劃模版(3篇)
- 干法配料安全操作規(guī)程范文(2篇)
- 2024年圖書購銷合同參考樣本(2篇)
- 安全標(biāo)識標(biāo)志管理規(guī)定模版(3篇)
- 2024年大學(xué)感恩父母演講稿樣本(3篇)
- 職工宿舍安全培訓(xùn)
- 華南理工大學(xué)《微積分Ⅰ(二)》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024-2030年配電自動化行業(yè)市場發(fā)展現(xiàn)狀分析及競爭格局與投資價值研究報告
- 山東省青島市李滄區(qū)2024-2025學(xué)年上學(xué)期八年級 期中英語試卷
- 工程項目承攬建設(shè)股權(quán)合作協(xié)議(居間協(xié)議)
- 2024年四川省綿陽市中考數(shù)學(xué)試題(無答案)
- 1.1公有制為主體+多種所有制經(jīng)濟共同發(fā)展課件-高中政治統(tǒng)編版必修二經(jīng)濟與社會
- 2024年中國空氣凈化節(jié)能燈市場調(diào)查研究報告
- 2024年有償贈與合同范本
- 2024-2025學(xué)年人教版物理九年級上學(xué)期期中測試物理模擬試卷
- 某食品有限公司安全生產(chǎn)風(fēng)險評估分級管控手冊
評論
0/150
提交評論