常用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è),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄GIT安裝配置----------稍微了解一下就行GIT原理簡(jiǎn)介----------稍微了解一下就行GIT常用命令介紹-------找你需要用的,但是都很管用!GIT安裝配置Ubuntu下安裝gitsudoapt-getinstallgit-coreopenssh-client再安裝一個(gè)gitk圖形化查看log會(huì)更方便,GIT安裝后的初始設(shè)置:運(yùn)行init-conf.sh腳本,按照流程會(huì)自動(dòng)設(shè)置git-user,git-email,commit-msg,commit信息模板,并且有g(shù)errit相關(guān)的設(shè)置。手動(dòng)設(shè)置(文本編輯器、顏色顯示、比較工具、命令別名)gitconfig--global………

詳細(xì)資料參考:/section/ch1-5/(初次運(yùn)行Git前的配置)/section/ch2-7/(自動(dòng)完成Git命令別名)/zzqhost/article/details/7298405(設(shè)置比較工具bcompare3)GIT原理簡(jiǎn)介GIT是分布式的管理系統(tǒng)(本地庫(kù)、遠(yuǎn)程服務(wù)器),可在離線狀態(tài)下工作保存在本地庫(kù),之后在合適的時(shí)候統(tǒng)一推送遠(yuǎn)程服務(wù)器。每次變更,GIT直接保存文件快照(存儲(chǔ)更快速),git只關(guān)心文件數(shù)據(jù)的整體是否發(fā)生變化。svn會(huì)在工程每級(jí)目錄下產(chǎn)生一個(gè).svn目錄,監(jiān)控著每個(gè)文件的具體變化。所以git只在工程根目錄下有一個(gè).git目錄記錄每次變更操作。每個(gè)“文件快照”都對(duì)應(yīng)一個(gè)版本節(jié)點(diǎn),是40位的一串?dāng)?shù)據(jù),例如log中的commit4b9da6552552987aa493b52f8696cd6d3b00373,這個(gè)是唯一的,不用擔(dān)心他會(huì)有重復(fù)。GIT版本節(jié)點(diǎn)實(shí)際上是通過對(duì)文件的內(nèi)容或目錄的結(jié)構(gòu)計(jì)算出一個(gè)SHA-1哈希值。所有保存在git數(shù)據(jù)庫(kù)中的東西都是用這個(gè)值來索引,而不是靠文件名。Git的文件狀態(tài)GIT有3個(gè)存儲(chǔ)區(qū):<working>-<Staging>-<repository>Staging,也叫indexfile或Cache,是一種中間過渡狀態(tài),用來存儲(chǔ)待提交的代碼。文件有四個(gè)狀態(tài):untracked/unmodified/modified/stagedGIT常用命令介紹gitcloneURLgitaddgitrmgitdiffgitstatus

gitcommitgitlog–pfilegitresetgitcheckout

gitrevertgitrevertgitshowfilenamegitcleangitpull--rebasegitstashgitcherry-pickgitblamegitclonegit支持多種數(shù)據(jù)傳輸協(xié)議,目前庫(kù)放在gerrit中管理,使用的是ssh傳輸協(xié)議。gitclonessh://4/projectnamegitadd這是個(gè)多功能命令,根據(jù)目標(biāo)文件的狀態(tài)不同,此命令的效果也不同:可以用它開始跟蹤新文件,或者把已跟蹤的文件放到暫存區(qū),還能用于合并時(shí)把有沖突的文件標(biāo)記為已解決狀態(tài)等。當(dāng)目錄下文件沒有做任何修改時(shí),運(yùn)行g(shù)itadd.,會(huì)追蹤當(dāng)前目錄的一舉一動(dòng)(例如不運(yùn)行這個(gè)命令的時(shí)候新建文件,gitstatus不會(huì)顯示這個(gè)文件的狀態(tài),運(yùn)行過這個(gè)命令,再新建文件會(huì)顯示文件狀態(tài)為Untracked)。修改或新增了文件,gitadd會(huì)把這個(gè)文件放到暫存區(qū),為commit做準(zhǔn)備。當(dāng)解決了文件沖突后,也需要gitadd一下沖突文件,告訴git沖突已經(jīng)解決好了,這時(shí)git才會(huì)退出沖突待解決狀態(tài),不退出這個(gè)狀態(tài)你做不了別的事。gitrm要從git中移除某個(gè)文件,先從工作目錄中刪除此文件(此時(shí)狀態(tài)是changedbutnotupdate),然后再運(yùn)行g(shù)itrmfliename(狀態(tài)變成準(zhǔn)備提交changestobecommitted)。如果要?jiǎng)h除之前已經(jīng)修改過并且add到暫存區(qū),則須要用強(qiáng)制刪除選項(xiàng)-f(force的首字母),不過也要防止誤刪除文件后丟失的內(nèi)容。另一種情況是從暫存區(qū)域中移除,但文件仍保留在工作目錄中,用--cached選項(xiàng)即可。gitrm\*~會(huì)遞歸刪除當(dāng)前目錄及其子目錄中所有~結(jié)尾的文件。gitstatus、gitdiff查看狀態(tài)和比較差異

GITSTATUS是一個(gè)很常用的命令,可查看即時(shí)狀態(tài):Untracked還沒有添加版本控制新文件(要commit這個(gè)文件還需要先add一下)Changedbutnotupdated有修改但是沒有加入暫存區(qū)的文件Changestobecommitted(stagingarea)已經(jīng)加入暫存區(qū)的文件

GITDIFF在提交前,如想了解working、indexfile、本地倉(cāng)庫(kù)的文件差異可執(zhí)行“gitdiff”查看(即自己修改了什么)gitdiff顯示working和Staging的差異gitdiff--cached顯示Staging和本地倉(cāng)庫(kù)的差異gitdiffHEAD顯示working和本地倉(cāng)庫(kù)的差異gitcommit從暫存區(qū)提交到存儲(chǔ)區(qū),在此之前,請(qǐng)一定要確認(rèn)還有什么修改過的或新建的文件還沒有add,否則提交的時(shí)候不會(huì)提交這些沒有暫存起來的變化。所以每次準(zhǔn)備提交前,先用gitstatus檢查一下,然后再運(yùn)行g(shù)itcommit命令。不帶任何參數(shù)的gitcommit會(huì)啟動(dòng)文本編輯器,如果默認(rèn)的nano編輯器用不慣,可以使用gitconfig

–globalcore.editor命令設(shè)定偏好的編輯器軟件。不建議使用gitcommit–a,這個(gè)命令只適合懶人使用,曾經(jīng)有個(gè)懶人就用這個(gè)命令把build生產(chǎn)文件也一起push到服務(wù)器,然后被眾人鄙視了。后悔藥gitcommit--amend上一次提交后沒有做任何改動(dòng),運(yùn)行此命令可以重新編輯上次提交的log信息,而不對(duì)上次提交的內(nèi)容做任何改動(dòng)。啟動(dòng)文本編輯器后,編輯log,保存退出,此時(shí)git會(huì)使用新的log覆蓋到上次提交的log。如果上次提交時(shí)忘了add提交。某些內(nèi)容,可以先gitadd一下,然后再執(zhí)行g(shù)itcommit

--amend起到補(bǔ)充提交的作用。gitloggitlog默認(rèn)不用任何參數(shù),gitlog會(huì)按提交時(shí)間列出所有的更新,最近的更新排在最上面。參考下列參數(shù),可以讓你快速找到想要的信息。-p按補(bǔ)丁格式顯示每個(gè)更新之間的差異。--stat顯示每次更新的文件修改統(tǒng)計(jì)信息。--shortstat只顯示--stat中最后的行數(shù)修改添加移除統(tǒng)計(jì)。--name-only僅在提交信息后顯示已修改的文件清單。--name-status顯示新增、修改、刪除的文件清單。--abbrev-commit僅顯示SHA-1的前幾個(gè)字符,而非所有的40個(gè)字符。--relative-date使用較短的相對(duì)時(shí)間顯示(比如,“2weeksago”)。--graph顯示ASCII圖形表示的分支合并歷史。--pretty使用其他格式顯示歷史提交信息??捎玫倪x項(xiàng)包括oneline,short,full,fuller和format(后跟指定格式)。-(n)僅顯示最近的n條提交--since,--after僅顯示指定時(shí)間之后的提交。--until,--before僅顯示指定時(shí)間之前的提交。--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í)行完之后,從這個(gè)<commit>之后的修改都會(huì)標(biāo)記為“changestobecommitted”。日常使用中可以通過靈活使用上面的命令在本地還原修改內(nèi)容,或者把多個(gè)本地提交合并為一個(gè)提交:例如同一個(gè)bug在本地提交了多次,使用soft選項(xiàng)可以達(dá)到匯總為一次提交。gitrevertgitrevert<commit-id>,可以把某次提交的內(nèi)容還原到修改之前,然后再自動(dòng)作為一次新的commit提交儲(chǔ)存在本地版本庫(kù)中。對(duì)于較早歷史的revert通常會(huì)有很多沖突,所以不建議使用這個(gè)命令。另外revert操作不能自動(dòng)生成Change-Id,不能提交到gerrit評(píng)審。gitcheckout主要有以下兩種常用情況。命令:gitcheckoutbranch檢出branch分支。將HEAD指向branch分支,以及用branch指向的版本庫(kù)更新暫存區(qū)和工作區(qū)。命令:gitcheckout--filename用暫存區(qū)中filename文件來覆蓋工作區(qū)中filename文件。相當(dāng)于把前次gitaddfilename以來的本地修改取消。gitcheckout<commit_idortag>--file可以把某個(gè)路徑的文件切換回歷史狀態(tài)。需要注意歷史的前后關(guān)系。gitstashgitstash:根據(jù)當(dāng)前工程的文件狀態(tài),除去untracked狀態(tài)文件,其他所有修改過的文件會(huì)被保存到一個(gè)臨時(shí)的堆棧中,然后依據(jù)最近的一次提交內(nèi)容還原這些被暫存的文件。隨時(shí)可以重新應(yīng)用。在使用gitpull--rebase前會(huì)經(jīng)常用到這個(gè)命令。gitstashlist:查看現(xiàn)有的儲(chǔ)藏。stash@{0}:WIPonmaster:049d078addedtheindexfilestash@{1}:WIPonmaster:c264051...Revert"addedfile_size“stash@{2}:WIPonmaster:21d80a5...addednumbertolog默認(rèn)儲(chǔ)藏的描述是工作目錄當(dāng)前最新commit的信息,gitstashsavemessage可以修改這個(gè)描述。gitstashapplystash@{2}:應(yīng)用儲(chǔ)藏的內(nèi)容,gitstashdropstash@{2}:刪除這條儲(chǔ)藏內(nèi)容,git

stashpop:應(yīng)用最后存儲(chǔ)的內(nèi)容,并把存儲(chǔ)記錄刪除其他的gitstash相關(guān)命令可以用mangitstash查看gitshowgitshowfilename查看文件的修改對(duì)比記錄。gitshow<commit_idortag>:<file>>file_pwd可以將歷史記錄文件取出到file_pwd路徑,<file>是文件的相對(duì)路徑。如果<file>和file_pwd相同,會(huì)覆蓋源文件。gitclean從工作區(qū)中移除untracked文件gitclean<path>可以移除指定路徑的untracked文件gitpull

gitpull--rebasegitfetch這些都是缺省命令gitfetch:從遠(yuǎn)程獲取最新版本到本地庫(kù)。相當(dāng)于gitfetchoriginmaster:從遠(yuǎn)程origin的master主分支下載最新的版本到origin/master分支上,不會(huì)自動(dòng)合并到本地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,驗(yàn)證無錯(cuò),在分支上直接commit。然后切換到master分支上,使用這條命令撿取分支上的commit應(yīng)用到本地master分支。最后我們只在master分支上執(zhí)行push操作。如此做的好處是可以保證master分支是干凈的,沒有編譯生成的文件和其他BUG的修改,原則上要求一個(gè)commit對(duì)應(yīng)一個(gè)BUG修改。缺點(diǎn)是,編譯生成的文件非常龐大,切換時(shí)需要等待較長(zhǎng)時(shí)間。后期在gerrit上面也有相關(guān)的cherry-pick的操作,可以將某次評(píng)審提交的內(nèi)容合并到本地,用來驗(yàn)證代碼修改。Cherry-pick和--rebase同樣是一種衍合的行為,不會(huì)產(chǎn)生merge節(jié)點(diǎn),在版本樹上可以看到是一個(gè)遞進(jìn)的狀態(tài)。gitblamegitblame<filename>可以顯示某個(gè)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論