版本管理工具介紹Git篇課件_第1頁(yè)
版本管理工具介紹Git篇課件_第2頁(yè)
版本管理工具介紹Git篇課件_第3頁(yè)
版本管理工具介紹Git篇課件_第4頁(yè)
版本管理工具介紹Git篇課件_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、版本管理工具介紹版本管理工具介紹GitGit篇篇版本管理工具是干什么用的? 備份文件 (U盤) 記錄歷史 (回到過去) 多端共享 (蘋果) 獨(dú)當(dāng)一面 (一個(gè)英雄) 團(tuán)隊(duì)協(xié)作 (多個(gè)英雄)版本管理工具發(fā)展歷史cvs 始祖、集中式、1985svn集大成者、集中式、2000Gitgeek主流、分布式、2005githubgeek社區(qū)、托管網(wǎng)站、2008版本回退我們不斷的修改,不斷的提交,不斷的更新到版本庫(kù)中,假如線上的代碼突然掛了,我需要回到上一個(gè)版本,或者需要回到某一個(gè)版本,這個(gè)時(shí)候需要怎么弄?你能想得到的,git都可以做得到git diff git diff 查看工作目錄與索引區(qū)(當(dāng)前暫存區(qū))文

2、件之間的差異 git diff -cached 查看索引區(qū)與本地git倉(cāng)庫(kù)之間的差異 git diff HEAD 顯示工作目錄與本地git倉(cāng)庫(kù)之間的差異 git diff HEAD 比較上次提交 和 git diff HEAD1同等 git diff HEAD2 比較上2次提交 git diff -stat 顯示修改的文件的個(gè)數(shù)和行數(shù) git difftool 使用圖形工具來顯示文件的差異(需要安裝diff.tool )歷史提交對(duì)比 git diff commit-ID 將指定的某次提交與當(dāng)前的目錄對(duì)比 git diff commit1 commit2將兩次提交的內(nèi)容相比,git diff c

3、ommit2 commit1 比較的結(jié)果不一樣,是相反的(線上提工單的時(shí)候應(yīng)該就用的這個(gè)) 也等價(jià)于 gti diff mit2 如何省略任意一個(gè)commit 則默認(rèn)使用HEAD代替 commit 可以是簡(jiǎn)寫的commit 哈希值,也可以是HEAD 。其中HEAD代表最后一次提交,HEAD代表最后一次提交的父提交,HEAD1代表最后一次提交的父提交,HEAD1等價(jià)于HEAD,HEAD2代表倒數(shù)第二次提交,以此類推HEAD HEAD100。 如果git status 告訴你有文件被修改過了以后,則可以用git diff 來查看修改的內(nèi)容git log線上代碼突然怪了,這個(gè)時(shí)候需要怎么弄?git

4、log (覺得太亂?加下面的參數(shù)試試)-pretty=oneline-graph-abbrev-commit-decorate-color -graph -pretty=format:%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%Creset -abbrev-commit (這是神馬)版本號(hào)3628164.882e1e0 commit idgit和SVN不一樣,Git的commit id不是1,2,3遞增的數(shù)字,而是一個(gè)SHA1計(jì)算出來的一個(gè)非常大的數(shù)字,用十六進(jìn)制表示,而且你看到的commit id和我的肯

5、定不一樣,以你自己的為準(zhǔn)。為什么commit id需要用這么一大串?dāng)?shù)字表示呢?因?yàn)镚it是分布式的版本控制系統(tǒng),后面我們還要研究多人在同一個(gè)版本庫(kù)里工作,如果大家都用1,2,3作為版本號(hào),那肯定就沖突了。時(shí)間線 我們?cè)诿刻峤灰粋€(gè)新版本的時(shí)候,可以理解為一條時(shí)間線(git其實(shí)就是這樣做的),我們慢慢往前走,走到一個(gè)點(diǎn),做一個(gè)標(biāo)記,這樣就會(huì)很清新看到自己所走過的路了 (TortoiseGit,這個(gè)工具就可以清晰的看到)git reset git reset -hard HEAD 時(shí)光穿梭到上一個(gè)版本 (HEAD 永遠(yuǎn)代表當(dāng)前版本,你如果穿梭了時(shí)空,也就回重新指向穿梭后的版本) git reset

6、-hard commit-id(這里的版本號(hào),寫前面幾位就可以了,保持唯一就行,git會(huì)自動(dòng)去找,一般寫7位) 這個(gè)時(shí)候,你如果找出了線上的問題,又需要回到最新版本,這個(gè)時(shí)候查看log也找不到最新版本,這可怎么辦 別急,還是那句話,你能想到的,git都可以辦得到。 可以用git reflog 試試,因?yàn)樗麜?huì)記錄你每一次操作,這個(gè)時(shí)候你就可以找到你的版本號(hào)了。happy 吧!時(shí)間線 我們?cè)诿刻峤灰粋€(gè)新版本的時(shí)候,可以理解為一條時(shí)間線(git其實(shí)就是這樣做的),我們慢慢往前走,走到一個(gè)點(diǎn),做一個(gè)標(biāo)記,這樣就會(huì)很清新看到自己所走過的路了 (TortoiseGit,這個(gè)工具就可以清晰的看到)工作區(qū)和索

7、引區(qū)(暫存區(qū))和版本庫(kù)git和其他版本控制系統(tǒng),如SVN的一個(gè)不同之處就是有暫存區(qū)的概念暫存區(qū)是GIT 非常重要的概念,弄明白了暫存區(qū),就弄明白了GIT 的很多操作到底干了什么(請(qǐng)務(wù)必把把這一點(diǎn)弄明白)管理修改 1、為什么git 比其他版本控制系統(tǒng)設(shè)計(jì)得優(yōu)秀 因?yàn)間it跟蹤并管理的是修改,而并不是文件 2、什么是修改? 新增一行、刪除一行、更改了字符、刪除一些,增加一些、甚至創(chuàng)建一個(gè)新文件也是一個(gè)修改 3、文件alter-git add-alter -commit 這個(gè)時(shí)候由哪里提交到哪里,提交的是什么?撤銷修改 根據(jù)”澳姐,你又胖了“舉個(gè)例子“ 需要用到的命令 git checkout -

8、file (丟棄掉工作區(qū)文件 文件修改)(和git checkout name 的區(qū)別) git reset HEAD file (把暫存區(qū)的修改撤銷掉unstage,重新放回到工作區(qū))刪除文件 git rm (rm -rf)基本操作命令需要學(xué)習(xí) 有兩種情況, 1、是需要?jiǎng)h除版本庫(kù)文件,需要delete-add-commit 2、刪除了不該刪除的文件(又找不到備份文件),上面學(xué)過,git reset HEAD file 一樣可以找回來,如果add了,只要沒有commit,依然可以重復(fù)撤銷修改的操作遠(yuǎn)程倉(cāng)庫(kù) 1、添加遠(yuǎn)程倉(cāng)庫(kù) 2、從遠(yuǎn)程倉(cāng)庫(kù)克隆分支管理但Git的分支是與眾不同的,無論創(chuàng)建、切換和

9、刪除分支,Git在1秒鐘之內(nèi)就能完成!無論你的版本庫(kù)是1個(gè)文件還是1萬(wàn)個(gè)文件。(其實(shí)其他的版本管理工具都有,但是:比蝸牛還慢)創(chuàng)建與合并分支 你已經(jīng)知道,每次提交,Git都把它們串成一條時(shí)間線,這條時(shí)間線就是一個(gè)分支。 HEAD嚴(yán)格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當(dāng)前分支。創(chuàng)建與合并分支創(chuàng)建與合并分支 git branch 查看分支 git branch 創(chuàng)建分支 git checkout 切換分支 git checkout -b 創(chuàng)建+切換分支 git merge 合并某分支到當(dāng)前分支 git branch -d(-D) 刪除分支G

10、it分支模式 主要分支主要分支 輔助分支輔助分支主要分支 中央倉(cāng)庫(kù)中有兩個(gè)長(zhǎng)期的分支:masterdevelop master用作生產(chǎn)分支,里面的代碼是準(zhǔn)備部署到生產(chǎn)環(huán)境的。 develop是可交付的開發(fā)代碼,也可以看成是用于集成分支,每晚構(gòu)建從develop獲取代碼。 當(dāng)develop分支中的代碼足夠穩(wěn)定的時(shí)候,就將改動(dòng)合并到master分支,同時(shí)打上一個(gè)標(biāo)簽,標(biāo)簽的名稱為發(fā)布的版本號(hào)。輔助分支通過輔助分支來幫助并行開發(fā),和主要分支不同,這些分支的生命周期是有限的:1、特性分支(開發(fā)需求的分支,從develop分出,最終必需合回develop)git branch -b (創(chuàng)建分支1,從分支

11、2分出)2、發(fā)布分支(一般從develop中分出,最終必需合回develop 和master ,發(fā)布分支以release-*的方式命名,包括一些小bug的修正和發(fā)布的元信息【版本號(hào),發(fā)布日期等】)3、緊急修復(fù)分支(一般從master分出,必需合并回develop(如果存在發(fā)布分支,則需要合并到發(fā)布分支【因?yàn)榘l(fā)布分支最終會(huì)合并到develop】)和master)git stash stash 是干什么的? 為什么要用stash?git stash git stash listgit stash apply 默認(rèn)當(dāng)stash0git stash pop git merge fast-forward

12、fast-forward git直接把HEAD指針指向合并分支的頭,完成合并。 -no-ff-no-ff:不使用fast-forward方式合并,保留分支的commit歷史 -squash-squash:使用squash方式合并,把多次分支commit歷史壓縮為一次 (壓縮以后,還需要重新commit一次,不然只是合并過來在暫存區(qū)里面的)解決沖突標(biāo)簽管理 git tag -a -m Remark commit-id -a 指定標(biāo)簽名 -m 指定說明文字 -s 用私鑰簽名一個(gè)標(biāo)簽(簽名采用必需安裝) git show 查看tag信息 git tag -d tagName 刪除本地tag git push origin 把tag提到遠(yuǎn)程分支 git push origin -tags 把所有tag提到遠(yuǎn)程分支 git push origin :refs/tags/ 刪除遠(yuǎn)程分支tag自定義Git忽略特殊文件.gitignore配置別名(-global 全局)git config -global alias.st status (co,ci,br 等)配置Git的時(shí)候,加上-global是針對(duì)當(dāng)前用戶起作用的,如果不加,那只針對(duì)當(dāng)前的倉(cāng)庫(kù)起作用。git config -global alias.lg log -color -gra

溫馨提示

  • 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)論