版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
目錄GIT安裝配置----------稍微了解一下就行GIT原理簡介----------稍微了解一下就行GIT常用命令介紹-------找你需要用的,但是都很管用!GIT安裝配置Ubuntu下安裝gitsudoapt-getinstallgit-coreopenssh-client再安裝一個gitk圖形化查看log會更方便,GIT安裝后的初始設(shè)置:運(yùn)行init-conf.sh腳本,按照流程會自動設(shè)置git-user,git-email,commit-msg,commit信息模板,并且有g(shù)errit相關(guān)的設(shè)置。手動設(shè)置(文本編輯器、顏色顯示、比較工具、命令別名)gitconfig--global………
詳細(xì)資料參考:/section/ch1-5/(初次運(yùn)行Git前的配置)/section/ch2-7/(自動完成Git命令別名)/zzqhost/article/details/7298405(設(shè)置比較工具bcompare3)GIT原理簡介GIT是分布式的管理系統(tǒng)(本地庫、遠(yuǎn)程服務(wù)器),可在離線狀態(tài)下工作保存在本地庫,之后在合適的時候統(tǒng)一推送遠(yuǎn)程服務(wù)器。每次變更,GIT直接保存文件快照(存儲更快速),git只關(guān)心文件數(shù)據(jù)的整體是否發(fā)生變化。svn會在工程每級目錄下產(chǎn)生一個.svn目錄,監(jiān)控著每個文件的具體變化。所以git只在工程根目錄下有一個.git目錄記錄每次變更操作。每個“文件快照”都對應(yīng)一個版本節(jié)點(diǎn),是40位的一串?dāng)?shù)據(jù),例如log中的commit4b9da6552552987aa493b52f8696cd6d3b00373,這個是唯一的,不用擔(dān)心他會有重復(fù)。GIT版本節(jié)點(diǎn)實際上是通過對文件的內(nèi)容或目錄的結(jié)構(gòu)計算出一個SHA-1哈希值。所有保存在git數(shù)據(jù)庫中的東西都是用這個值來索引,而不是靠文件名。Git的文件狀態(tài)GIT有3個存儲區(qū):<working>-<Staging>-<repository>Staging,也叫indexfile或Cache,是一種中間過渡狀態(tài),用來存儲待提交的代碼。文件有四個狀態(tài):untracked/unmodified/modified/stagedGIT常用命令介紹gitcloneURLgitaddgitrmgitdiffgitstatus
gitcommitgitlog–pfilegitresetgitcheckout
gitrevertgitrevertgitshowfilenamegitcleangitpull--rebasegitstashgitcherry-pickgitblamegitclonegit支持多種數(shù)據(jù)傳輸協(xié)議,目前庫放在gerrit中管理,使用的是ssh傳輸協(xié)議。gitclonessh://4/projectnamegitadd這是個多功能命令,根據(jù)目標(biāo)文件的狀態(tài)不同,此命令的效果也不同:可以用它開始跟蹤新文件,或者把已跟蹤的文件放到暫存區(qū),還能用于合并時把有沖突的文件標(biāo)記為已解決狀態(tài)等。當(dāng)目錄下文件沒有做任何修改時,運(yùn)行g(shù)itadd.,會追蹤當(dāng)前目錄的一舉一動(例如不運(yùn)行這個命令的時候新建文件,gitstatus不會顯示這個文件的狀態(tài),運(yùn)行過這個命令,再新建文件會顯示文件狀態(tài)為Untracked)。修改或新增了文件,gitadd會把這個文件放到暫存區(qū),為commit做準(zhǔn)備。當(dāng)解決了文件沖突后,也需要gitadd一下沖突文件,告訴git沖突已經(jīng)解決好了,這時git才會退出沖突待解決狀態(tài),不退出這個狀態(tài)你做不了別的事。gitrm要從git中移除某個文件,先從工作目錄中刪除此文件(此時狀態(tài)是changedbutnotupdate),然后再運(yùn)行g(shù)itrmfliename(狀態(tài)變成準(zhǔn)備提交changestobecommitted)。如果要刪除之前已經(jīng)修改過并且add到暫存區(qū),則須要用強(qiáng)制刪除選項-f(force的首字母),不過也要防止誤刪除文件后丟失的內(nèi)容。另一種情況是從暫存區(qū)域中移除,但文件仍保留在工作目錄中,用--cached選項即可。gitrm\*~會遞歸刪除當(dāng)前目錄及其子目錄中所有~結(jié)尾的文件。gitstatus、gitdiff查看狀態(tài)和比較差異
GITSTATUS是一個很常用的命令,可查看即時狀態(tài):Untracked還沒有添加版本控制新文件(要commit這個文件還需要先add一下)Changedbutnotupdated有修改但是沒有加入暫存區(qū)的文件Changestobecommitted(stagingarea)已經(jīng)加入暫存區(qū)的文件
GITDIFF在提交前,如想了解working、indexfile、本地倉庫的文件差異可執(zhí)行“gitdiff”查看(即自己修改了什么)gitdiff顯示working和Staging的差異gitdiff--cached顯示Staging和本地倉庫的差異gitdiffHEAD顯示working和本地倉庫的差異gitcommit從暫存區(qū)提交到存儲區(qū),在此之前,請一定要確認(rèn)還有什么修改過的或新建的文件還沒有add,否則提交的時候不會提交這些沒有暫存起來的變化。所以每次準(zhǔn)備提交前,先用gitstatus檢查一下,然后再運(yùn)行g(shù)itcommit命令。不帶任何參數(shù)的gitcommit會啟動文本編輯器,如果默認(rèn)的nano編輯器用不慣,可以使用gitconfig
–globalcore.editor命令設(shè)定偏好的編輯器軟件。不建議使用gitcommit–a,這個命令只適合懶人使用,曾經(jīng)有個懶人就用這個命令把build生產(chǎn)文件也一起push到服務(wù)器,然后被眾人鄙視了。后悔藥gitcommit--amend上一次提交后沒有做任何改動,運(yùn)行此命令可以重新編輯上次提交的log信息,而不對上次提交的內(nèi)容做任何改動。啟動文本編輯器后,編輯log,保存退出,此時git會使用新的log覆蓋到上次提交的log。如果上次提交時忘了add提交。某些內(nèi)容,可以先gitadd一下,然后再執(zhí)行g(shù)itcommit
--amend起到補(bǔ)充提交的作用。gitloggitlog默認(rèn)不用任何參數(shù),gitlog會按提交時間列出所有的更新,最近的更新排在最上面。參考下列參數(shù),可以讓你快速找到想要的信息。-p按補(bǔ)丁格式顯示每個更新之間的差異。--stat顯示每次更新的文件修改統(tǒng)計信息。--shortstat只顯示--stat中最后的行數(shù)修改添加移除統(tǒng)計。--name-only僅在提交信息后顯示已修改的文件清單。--name-status顯示新增、修改、刪除的文件清單。--abbrev-commit僅顯示SHA-1的前幾個字符,而非所有的40個字符。--relative-date使用較短的相對時間顯示(比如,“2weeksago”)。--graph顯示ASCII圖形表示的分支合并歷史。--pretty使用其他格式顯示歷史提交信息??捎玫倪x項包括oneline,short,full,fuller和format(后跟指定格式)。-(n)僅顯示最近的n條提交--since,--after僅顯示指定時間之后的提交。--until,--before僅顯示指定時間之前的提交。--author僅顯示指定作者相關(guān)的提交。--committer僅顯示指定提交者相關(guān)的提交。例如格式化顯示log信息的別名設(shè)置(在用戶目錄下的.gitconfig文件設(shè)置):[alias]
lg=log--graph--pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset%s%Cgreen(%cr)%Creset'--abbrev-commit--date=relativegitreset將當(dāng)前分支重設(shè)到指定的<commit>或者HEAD(默認(rèn)是HEAD,即最新的一次提交)gitreset--hard<commit>:重設(shè)暫存區(qū)和工作目錄,把此<commit>之后的任何修改都拋棄,并把HEAD指向此<commit>gitreset--soft<commit>:暫存區(qū)和工作目錄中的內(nèi)容不作任何改變,僅把HEAD指向<commit>,執(zhí)行完之后,從這個<commit>之后的修改都會標(biāo)記為“changestobecommitted”。日常使用中可以通過靈活使用上面的命令在本地還原修改內(nèi)容,或者把多個本地提交合并為一個提交:例如同一個bug在本地提交了多次,使用soft選項可以達(dá)到匯總為一次提交。gitrevertgitrevert<commit-id>,可以把某次提交的內(nèi)容還原到修改之前,然后再自動作為一次新的commit提交儲存在本地版本庫中。對于較早歷史的revert通常會有很多沖突,所以不建議使用這個命令。另外revert操作不能自動生成Change-Id,不能提交到gerrit評審。gitcheckout主要有以下兩種常用情況。命令:gitcheckoutbranch檢出branch分支。將HEAD指向branch分支,以及用branch指向的版本庫更新暫存區(qū)和工作區(qū)。命令:gitcheckout--filename用暫存區(qū)中filename文件來覆蓋工作區(qū)中filename文件。相當(dāng)于把前次gitaddfilename以來的本地修改取消。gitcheckout<commit_idortag>--file可以把某個路徑的文件切換回歷史狀態(tài)。需要注意歷史的前后關(guān)系。gitstashgitstash:根據(jù)當(dāng)前工程的文件狀態(tài),除去untracked狀態(tài)文件,其他所有修改過的文件會被保存到一個臨時的堆棧中,然后依據(jù)最近的一次提交內(nèi)容還原這些被暫存的文件。隨時可以重新應(yīng)用。在使用gitpull--rebase前會經(jīng)常用到這個命令。gitstashlist:查看現(xiàn)有的儲藏。stash@{0}:WIPonmaster:049d078addedtheindexfilestash@{1}:WIPonmaster:c264051...Revert"addedfile_size“stash@{2}:WIPonmaster:21d80a5...addednumbertolog默認(rèn)儲藏的描述是工作目錄當(dāng)前最新commit的信息,gitstashsavemessage可以修改這個描述。gitstashapplystash@{2}:應(yīng)用儲藏的內(nèi)容,gitstashdropstash@{2}:刪除這條儲藏內(nèi)容,git
stashpop:應(yīng)用最后存儲的內(nèi)容,并把存儲記錄刪除其他的gitstash相關(guān)命令可以用mangitstash查看gitshowgitshowfilename查看文件的修改對比記錄。gitshow<commit_idortag>:<file>>file_pwd可以將歷史記錄文件取出到file_pwd路徑,<file>是文件的相對路徑。如果<file>和file_pwd相同,會覆蓋源文件。gitclean從工作區(qū)中移除untracked文件gitclean<path>可以移除指定路徑的untracked文件gitpull
gitpull--rebasegitfetch這些都是缺省命令gitfetch:從遠(yuǎn)程獲取最新版本到本地庫。相當(dāng)于gitfetchoriginmaster:從遠(yuǎn)程origin的master主分支下載最新的版本到origin/master分支上,不會自動合并到本地master上。gitpull--rebase:從遠(yuǎn)程獲取最新版本并rebase到本地,進(jìn)行合并相當(dāng)于gitfetch和gitrebaseorigin/mastergitpull:從遠(yuǎn)程獲取最新版本并merge到本地相當(dāng)于gitfetch和gitmergeorigin/mastergitcherry-pick<commit-id>通常是在分支之間做操作,例如在本地分支上修復(fù)bug,驗證無錯,在分支上直接commit。然后切換到master分支上,使用這條命令撿取分支上的commit應(yīng)用到本地master分支。最后我們只在master分支上執(zhí)行push操作。如此做的好處是可以保證master分支是干凈的,沒有編譯生成的文件和其他BUG的修改,原則上要求一個commit對應(yīng)一個BUG修改。缺點(diǎn)是,編譯生成的文件非常龐大,切換時需要等待較長時間。后期在gerrit上面也有相關(guān)的cherry-pick的操作,可以將某次評審提交的內(nèi)容合并到本地,用來驗證代碼修改。Cherry-pick和--rebase同樣是一種衍合的行為,不會產(chǎn)生merge節(jié)點(diǎn),在版本樹上可以看到是一個遞進(jìn)的狀態(tài)。gitblamegitblame<filename>可以顯示某個
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 金融行業(yè)前臺咨詢工作總結(jié)
- 營銷行業(yè)創(chuàng)新實踐總結(jié)
- 無人駕駛技術(shù)的前景展望
- IT行業(yè)銷售員工作總結(jié)
- 電力行業(yè)可再生能源發(fā)展顧問工作總結(jié)
- 書店美容院保安工作經(jīng)驗
- 金融行業(yè)中理財咨詢顧問的工作要求
- 旅游行業(yè)導(dǎo)游培訓(xùn)總結(jié)
- 【八年級下冊地理湘教版】專項04 時政地理
- 2024年稅務(wù)師題庫附參考答案【輕巧奪冠】
- 用人單位職業(yè)病危害現(xiàn)狀評價技術(shù)導(dǎo)則
- 中建一局質(zhì)量考核評價辦法
- 民辦非企業(yè)單位會計報表(會民非表010203)
- 口腔頜面系統(tǒng)解剖骨
- 川骨香-川古香手撕鴨配方及制作方法
- 深圳市排水管網(wǎng)維護(hù)管理質(zhì)量
- 變電站二次設(shè)計規(guī)范
- 能見度不良時船舶航行須知
- 軟膠囊的制備
- 實習(xí)證明、實習(xí)證明表(模板)2頁
- 目視化管理實施計劃方案
評論
0/150
提交評論