TortoiseGi用戶手冊(cè)_第1頁(yè)
TortoiseGi用戶手冊(cè)_第2頁(yè)
TortoiseGi用戶手冊(cè)_第3頁(yè)
TortoiseGi用戶手冊(cè)_第4頁(yè)
TortoiseGi用戶手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(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)介

1、TortoiseGit 用戶手冊(cè) 1說(shuō)明 11 安裝MsysGit 12 安裝TortoiseGit 63 配置TortoiseGit 63.1 生成公鑰 63.2 配置用戶(重要) 73.3 配置msysgit 74 TortoiseGit 的使用 84.1 克隆遠(yuǎn)程的版本庫(kù) 84.2 使用 TortoiseGit 本地建庫(kù) 104.3 向倉(cāng)庫(kù)中添加內(nèi)容 104.4 推到服務(wù)器 134.5 更新版本庫(kù) 154.5.1 git pull 154.5.2 git fetch 164.6 分支 164.6.1 創(chuàng)建分支 174.6.2 分支切換 174.6.3 分支合并 184.7 版本差異 18

2、4.7.1 兩個(gè)版本的差異 184.7.2 查看未提交的修改 194.8 撤銷某次操作 204.9 Git Resolve 205 Git 中沖突的解決 215.1 邏輯沖突 215.2 樹(shù)沖突 225.3 內(nèi)容沖突 236 Git 分支管理策略 256.1 Master分支(主分支) 266.2 開(kāi)發(fā)分支 Develop 266.3 臨時(shí)性分支 27功能分支 27預(yù)發(fā)布分支 28修補(bǔ) Bug 分支 28TortoiseGit用戶手冊(cè)說(shuō)明我們可以把CVS SVN拿來(lái)和GIT比較但是不要拿它們來(lái)思考GIT本文檔只是日常工作中 GIT的一些使用的簡(jiǎn)單歸納,旨在幫助大家快速用上GIT,先能夠用起來(lái),

3、知其然后再去究其所以然。本文檔主要是關(guān)于Git圖形界面客戶端(TortoiseGit)的使用,但是安裝 TortoiseGit前必須安裝 windows下的Git版本 MsysGit。注意:本人安裝過(guò)其他版本的msysgit和tortoisegit ,安裝界面略有不同。1 安裝 MsysGitMsysgit是Git版本控制系統(tǒng) Windows下的版本。msysGit有個(gè)簡(jiǎn)單的 GUI工具,及簡(jiǎn)單的Explorer集成;但它自帶的 Bash (命令行式)非常好用,深得 Linux的真?zhèn)?。下載地址 (Git-180-preview20121022.exe ):http:/code.google.C

4、om/p/msysgit/downloads/listCancel選擇安裝目錄:Select Desbnation Location Where should Git be installed?© Git SetupSetup will install Git into tfie following Folder.To continue, dick Ne>t. If you would like to select a different folder r dick Browse.D: program filesitbrowseAt least 75,4I*E of free

5、disk space is reqiired.htt 口; J/msy /iLqoaqlsEcI e,匚 qe,< Rmck Hext > I Caricel1,017 KB三IQ” KB<BackGt SetupSelect ComponentsWhich components should be installed?Select the components you want to instal; dear the components you do not want to install. Cbck Next when you are ready to continue

6、.k E In the Quick LaunchL V On the DesktopJ Window Explorer integration-Q Simple context menu (Registry based)卜 Git Bash HereI世 Gt GUI Here。Advanced context menu (git-cheetah plugin)J Associate .git* configuration files with the default text editor3 Associate .sb files to be run with Bash口 Use a Tru

7、eType font in all console wndows (not only for Gt Bash)Current selecbon requres at least 76T MB of disk space.http:/msy5git.g ooglecode .com/Cancel設(shè)置如何使用 GIT命令行,按默認(rèn)設(shè)置,使用軟件自帶的BASH風(fēng)格的命令行即可:Q Gft SdtupL1JAdjusting vour PATH environmentHtwv would you like to use Git from the command line?u Use Git B>

8、ash onlyThis :s frit most eari«rvaty& ehoi« f you are 七6式kncd about the stability of yotr EEbem, Your PATH will not be modified.Run 石兀 from the Windows Comma nd Prom ptThis option 國(guó) conadered safe and no oonflicte Lvith otfier tools are known.Orily Git vtill be ddded to ycur PATH. Use

9、this opUon if you want to u 至 Gt from a CygMn Prompt make sure to not haw Cyg(A-in's Gitinstslled).Run -Git and induded Unix toos from the Windows 匚orriEand PromptBoth Gt did ii 恒 accwnfMnyirrg Unix to oh will be added tn “out PATH.Warning; This will override Windows tools like find.exe and sart

10、exe. Select this option only if you understand the im plicationshttp: "nnFinish5Qk ggqleco de. com/金 gack Next >Cancel配置版本控制中文本文件的換行風(fēng)格,按系統(tǒng)默認(rèn)設(shè)置即可(即從版本庫(kù)中取出時(shí)使用Windows系統(tǒng)的“回車+換行”風(fēng)格,存入版本庫(kù)時(shí)使用Unix系統(tǒng)的“換行”風(fēng)格)。Git,蛾叩_但Configuring the line end ing conversioresHow shculd Git treat line endings in test fi

11、les?< Sack Next >Cdncel正在安裝:安裝完成:Completing the Git Setup WizardSetup lias firhiehed installing Git on -your connpij ter. The dpphca bon may be iBundied t>y 5etectir the instiled icons.Click Finish to exit Setup.17 View REleaseN0tes.rtf2安裝To安iseGitTortoiseGit只是 GUI工具,使用它需要先安裝MsysGit,這是正宗的 G

12、it之 Windows版本。其用法類似于 TortoiseSVNL下載地址 (TortoiseGit--32bit ):http:/code.google.eom/p/tortoisegit/downloads/list開(kāi)始安裝:一路點(diǎn)擊"next"即可。3 配置 TortoiseGit3.1 生成公鑰生成SSH安全密鑰,提供給 GIT版本庫(kù)管理員以訪問(wèn)Git版本庫(kù),點(diǎn)擊桌面上生成的圖標(biāo)然后執(zhí)行執(zhí)行"ssh-keygen”生成自己的公鑰:.iDrhws.,iinegubKSaftBox一路回車即可完成操作, 這么操作的話就是沒(méi)有給自己的私鑰設(shè)置密碼,

13、也可以在執(zhí)行過(guò)程中設(shè)置私鑰密碼的。生成的公鑰和私鑰的目錄是:1aI 端 1a EQ q摩前三朝注MH以4/1。W42交棒I20135 1BJ2f B 袁相2013/4/11 g:48文他看見(jiàn)沒(méi),id_rsa就是私鑰,id_rsa.pub就是公鑰,將id_rsa.pub復(fù)制一份,然后重命名,發(fā) 送給GIT版本庫(kù)的管理員即可。3.2 配置用戶(重要)在桌面的空白處右鍵TortoiseGitsetings:它 I ortoi5edrtSVN Chetkcvt,Mortoi二e,UN圖形.顯性.Git Clcne.Git Creat&曾。營(yíng)上口,here.,石! About選擇“ Git”,然

14、后在“ Name”和“ Email”中填入相關(guān)用戶信息即可:;/ Settings - Tortci5etiit3.3 IESl msysgit這一步就是為什么要安裝msysgit 了,TortoiseGit是在它上運(yùn)行的。完成了 msysgit的配置我們就可以開(kāi)始使用TortoiseGit 進(jìn)彳f clone > pull、create branch、push 等操作了。4 TortoiseGit 的使用本例中GIT版本庫(kù)相關(guān)信息如下:GIT 版本庫(kù)地址:“62”操彳GIT版本庫(kù)的用戶名:root測(cè)試項(xiàng)目的名稱:project1本地測(cè)試目錄:D: gittest4.

15、1 克隆遠(yuǎn)程的版本庫(kù)例:服務(wù)器的 project1 倉(cāng)庫(kù) clone 至U D:gittest : 在test目錄上右鍵選擇"Git clone”:然后URL輸入:root62:project1.git ,選擇“Web”,會(huì)自動(dòng)生成存放倉(cāng)庫(kù)的目錄:D:gittestproject1 ;最后“ OK'開(kāi)始clone (如果的你的私鑰設(shè)置了密碼還有下面的提示,輸入密碼即可)然后就看見(jiàn)了 success的提示窗口:D:'gittest - Git Command Progress - Tortoi5eGitgit.exe clajie -pregress

16、 三督 1,BrDGtfllO_ 17 _lS_lG2:projeet;1 二 gittE b fpz:o2i e ctl *Cloningf into 'D二tyit'ke旦LtpEE3:E!C2化L' -, warningz 丫口n appear "bo have clcneff an emptsy reposit;gry. Sacceaa (1104£4 ms g 2013/4/12 11:59:55>Glos-e4n這樣我們就完成了一次遠(yuǎn)程倉(cāng)庫(kù)的clone,因?yàn)槲业倪h(yuǎn)程倉(cāng)庫(kù)是新建的里面是空的,所以給了個(gè)警告說(shuō)是我克隆了一個(gè)空倉(cāng)庫(kù),沒(méi)關(guān)系

17、的。(看下你的D:gittestproject1里面是不是有個(gè).git的目錄?如果沒(méi)有就是隱藏了)4.2 使用TortoiseGit本地建庫(kù)選中某文件夾按右鍵,選才G Git Create repository here就可以創(chuàng)建庫(kù)了:Git InitGit GuiOft bash共享, H <jil Clui c-p它 lortoiseGit鼠: WM Checkout .hJortoi c&i/hd屬性在出現(xiàn)的窗口中,不勾選選項(xiàng),直接按OK:在目錄中就會(huì)出現(xiàn)一個(gè)名為 .git的隱藏文件夾,所有庫(kù)的相關(guān)內(nèi)容都會(huì)存在這個(gè)文件夾中.以后不管這個(gè)項(xiàng)目添加多少個(gè)文件夾,整個(gè)庫(kù)只會(huì)有這一

18、個(gè)管理文件夾,這和CVS和SVN有較大 差異。提示:這里所建的倉(cāng)庫(kù)只是用說(shuō)明Git的一個(gè)本地建庫(kù)的功能,與前面和后面的內(nèi)容是相互獨(dú)立的,所以大家別誤解這一步到底是做什么的。4.3 向倉(cāng)庫(kù)中添加內(nèi)容這一步是在本機(jī)完成的,完全可以不需要網(wǎng)絡(luò)脫離服務(wù)器的。4.4 那一步我們clone 了一個(gè)空的版本庫(kù),現(xiàn)在為這個(gè)庫(kù)添加目錄和文件。先給D:gittestproject1 創(chuàng)建三個(gè)目錄:*計(jì)茸機(jī) SOFTWARE (D:)* git k test + projectl +包含到廢口,共享, 刻錄新建文件夾畫名稱修改日期姬IK-git2013/4/12 11:59文件夾:珀磁直(C:),code2013/

19、4/口 15:39文件夾OFTWARE D:j.exu2013/4/12 13:39文件失.ssh,tmp2013/4/12 13:40文件夾然后在tmp添加幾個(gè)文件:檜 L_味完I育:尋象建文性exttmp這一步我們就需要把這些文件和目錄commit到本地的版本庫(kù)projectl中生成版本快照,在D:gittestproject1目錄的空白處右鍵選擇:Git commit->"masterSTWURE © git te;t preject-卜注意:我們目前只有一個(gè)分支所以只能commit到master分支,當(dāng)我們創(chuàng)建了其他分支以后我們可以commit到別的分支。OK

20、” :" D:g it t e p rqj ertl - Git Com mane Prog ress - TortDiseGit然后把新建文件前面的鉤給打上,錄入相關(guān)操作說(shuō)明點(diǎn)擊maciter roati-co'mEiiit) d7S94c add files U&adms .txt; and tinp_ titt to Tmp direexory2芯 Tn習(xí)號(hào)匚tinn習(xí)(+1create mode 10064 4 ticp/口匕-但總七*七|create Skoda 1QOG4 4 tcp/tinp. txtSuccmb (63 £AS I? 2 01

21、3/4/12 14:07:40)Push注意:這一步的操作只是commit 了 tmp目錄和它下面的那兩個(gè)文件,其他的兩個(gè)空目錄并沒(méi)有commit進(jìn)來(lái),要一起commit的話必須給那兩個(gè)目錄添加文件。4.4 推到服務(wù)器從遠(yuǎn)程的clone到本地的commit,那么現(xiàn)在就可以把本地的版本庫(kù)push到服務(wù)器了。在 projectl 目錄的空白處右鍵“TortoiseGit-» "Push":看下圖,可以選擇要Push的分支和要Push到服務(wù)器的哪個(gè)分支,這些都是根據(jù)實(shí)際的需要來(lái)定的,這里它會(huì)默認(rèn)的推送到它c(diǎn)lone的服務(wù)器(62)的projectl倉(cāng)

22、庫(kù)的。在Push時(shí)還會(huì)彈出輸入私鑰密碼的對(duì)話框,輸入即可:提醒:master是Git默認(rèn)的主要分支(主干),適合單人獨(dú)自開(kāi)發(fā),若是多人開(kāi)發(fā) 強(qiáng)烈建議每人創(chuàng)建自己的分支。推送成功!看下log吧,右鍵選擇"Git show log ":這個(gè)日志是隨時(shí)都能查看的,能看見(jiàn)版本號(hào)、提交的文件、時(shí)間、由誰(shuí)提交的等信息。4.5 更新版本庫(kù)4.5.1 git pull前一天服務(wù)器的版本庫(kù)經(jīng)過(guò)若人的push以后現(xiàn)在是最新的了,那么今天的準(zhǔn)備工作就是把最近的版本庫(kù)合并到本機(jī),我們采用的是 pull命令。更新操作:在 D:gittestproject1目錄下,選中 projectl倉(cāng)庫(kù)右鍵,然后

23、選擇" TortoiseGit» " Pull ":點(diǎn)擊“ OK "就能把服務(wù)器的版本更新到本地的master分支,同步的結(jié)果是我發(fā)現(xiàn)倉(cāng)庫(kù)里面多了 一個(gè)文件夾和文件。然后新建一個(gè)分支在本分支開(kāi)始今天工作。4.5.2 git fetchGit Pull能實(shí)現(xiàn)本機(jī)和服務(wù)器的同步,但是它不夠安全,還有一種更加安全的做法就是git fetch ,我的做法是創(chuàng)建一個(gè)新的分支master/b_fetch ,先把代碼fetch到master/b_fetch分支,然后比較master/b_fetch與master分支的區(qū)別(就是兩個(gè)版本庫(kù)的區(qū)別),最后進(jìn)行me

24、rge操作。 這樣具有安全性!分支的創(chuàng)建和比較差異后面介紹!Git Pull=git Fetch+git merger演示一下fetch吧!切換到 b_fetch分支,然后右鍵選擇"TortoiseGit -»" fetch ":4.6分支Git分支簡(jiǎn)介:Git的分支可謂是難以置信的輕量級(jí),它的新建操作幾乎可以在瞬間完成,并且在不同分支 間切換起來(lái)也差不多一樣快。和許多其他版本控制系統(tǒng)不同,Git鼓勵(lì)在工作流程中頻繁使用分支與合并,哪怕一天之內(nèi)進(jìn)行許多次都沒(méi)有關(guān)系。Git中的分支實(shí)際上僅是一個(gè)包含所指對(duì)象校驗(yàn)和(40個(gè)字符長(zhǎng)度 SHA-1字串)的文件,所

25、以創(chuàng)建和銷毀一個(gè)分支就變得非常廉價(jià)。說(shuō)白了,新建一個(gè)分支就是向一個(gè)文件寫入41個(gè)字節(jié)(外加一個(gè)換行符)那么簡(jiǎn)單,當(dāng)然也就很快了。這和大多數(shù)版本控制系統(tǒng)形成了鮮明對(duì)比,它們管理分支大多采取備份所有項(xiàng)目文件到特定目錄的方式,所以根據(jù)項(xiàng)目文件數(shù)量和大小不同,可能花費(fèi)的時(shí)間也會(huì)有相當(dāng)大的差別,快則幾秒,慢則數(shù)分鐘。而Git的實(shí)現(xiàn)與項(xiàng)目復(fù)雜度無(wú)關(guān),它永遠(yuǎn)可以在幾毫秒的時(shí)間內(nèi)完成分支的創(chuàng)建和切換。同時(shí),因?yàn)槊看翁峤粫r(shí)都記錄了祖先信息(譯注:即 parent對(duì)象),所以以后要合并分支時(shí),尋找恰 當(dāng)?shù)暮喜⒒A(chǔ)(譯注:即共同祖先)的工作其實(shí)已經(jīng)完成了一大半,實(shí)現(xiàn)起來(lái)非常容易。Git鼓勵(lì)開(kāi)發(fā)者頻繁使用分支,正是因

26、為有著這些特性作保障。4.6.1創(chuàng)建分支右鍵選擇"Git Create BranchD:gittestXprojertl - C reatt Branch - TortoheGit這里是我們創(chuàng)建的第一條分支,所以只能創(chuàng)建在master分支上面了。brar>chl/ ma Eter4.6.2分支切換右鍵選擇“ Git Branch "就能看見(jiàn)所有的分支,顯示的當(dāng)前所在分支是master (注意前面的對(duì)勾),branchi是新建分支,這樣我們就能隨意的切換分支。際齦題工工俄胃腱除(L)CtrlVGii Add all files now5it Commrt foolGit

27、 11 storyGit GuiGi- BrenthGit Hash姓莫:川4.6.3分支合并在branchi上的開(kāi)發(fā)完成以后我們需要合并到master分支,首先切回 master分支,然后右鍵選擇"TortoiseGit -» “ merge ”:當(dāng)前分支是 master,所以得選擇 branchi,就是把branchi合并到 master分支上。4.7版本差異4.7.1兩個(gè)版本的差異比如我現(xiàn)在想看一下我master分支和branchi這兩個(gè)版本的差異,該怎么看呢?首先我們?cè)?quot;Git Show log”下看到所有的提交日志,然后按住shift用鼠標(biāo)選擇最新的 m

28、aster分支和branchi分支,右鍵選擇"Compare revisions”就能看見(jiàn)這兩個(gè)版本的差異:£>'s-qitf tfi ctihproi*dEl - 人匕“產(chǎn)1 Tortii-E# !*itPm: 助到 4,U , Trt 2313/.二出 M Uj)片二手:七您/ “乩C LiiN 年 .>|messagey-orna cir di»">jeE*02 啕are#«f.CUlCei/janailaJ.2J :二口 ” h.遍修3歲夫逅HU”1R五U4 2DJW;316 5ta ", :. -

29、P F .尸 口通因力*出 日旺但2215 2Z U 2D0W.2113 29 32 2D.那 JMO塞 4).'DLgitle5tpnojectl - Changed Files - Tarloi5cGitM回2MDiffierencebetAtenversion 1 (CommftData WeM5d3e 3c2236cb ae-qd LO6d6ace7260b177O5adxfO5d33eZ2! addVersion 296e2c6c33ec9cc deb 脂書 2 3dc23c5b3ela 59-H72Rgflr。胃| RtfBroifrse 96e2r6c3:br LtxtF

30、ileExtensionActionLiies addedLines removed# brl.txtBtxtModified1c卜(?闔txtMAdded1grepo/abcd.txtktxtAdded1cFitter paths由上圖我們發(fā)現(xiàn) master分支相對(duì)branchi分支修改了 bitxt,增加了 hoa.txt和repo文件夾 以及repo下面的abcd.txt文件。4.7.2查看未提交的修改當(dāng)你修改了一些文件后,這時(shí)還沒(méi)有提交,你可能意識(shí)到自己的某些修改是錯(cuò)誤的,那么你就想再次的審查一遍,那么怎么看你修改了哪些文件的哪些位置呢?這時(shí)就能看見(jiàn)修改過(guò)的文件,如果想看修改的具體位置

31、可以雙擊文件繼續(xù)查看詳細(xì)內(nèi)容:首先右鍵選擇"TortoiseGit”,然后選擇diff:4.8 撤銷某次操作revert是撤銷某次操作,此次操作之前的commit都會(huì)被保留,比如我們發(fā)現(xiàn)自己修改的錯(cuò)誤后就可以撤銷,右鍵選擇"TortoiseGit”,然后選擇"Revert”:選中要撤銷的文件,點(diǎn)擊“ OK'就能實(shí)現(xiàn)撤銷操作。4.9 Git Resolve這個(gè)命令主要是在解決沖突時(shí)才用的,具體用法看5.3中內(nèi)容沖突的解決。5 Git中沖突的解決Git中很多命令都可能出現(xiàn)沖突,但從根本上來(lái)講,者B是merge和patch (應(yīng)用補(bǔ)?。r(shí)產(chǎn)生沖突。而rebase

32、就是重新設(shè)置基準(zhǔn),然后應(yīng)用補(bǔ)丁的過(guò)程,所以也會(huì)沖突。一般產(chǎn)生沖 突的類型有邏輯沖突、內(nèi)容沖突、樹(shù)沖突。團(tuán)隊(duì)協(xié)作中沖突是不可避免的,應(yīng)該盡最大努力的避免沖突發(fā)生,比如模塊的分 工化,然后就是每個(gè)開(kāi)發(fā)人員遵守一定的的規(guī)則, 必要的溝通是解決沖突最有效 最好的方法!下面我們分別模擬三個(gè)沖突并解決。5.1 邏輯沖突什么事邏輯沖突? Git自動(dòng)處理(合并、應(yīng)用補(bǔ)?。┏晒?,但是邏輯上是有問(wèn)題的。比如另 外一個(gè)人修改了文件名,但我還使用老的文件名,這種情況下自動(dòng)處理是能成功的,但實(shí)際上是有問(wèn)題的。又比如,函數(shù)返回值含義變化,但我還使用老的含義,這種情況自動(dòng)處理成功,但可能隱藏著重大 BUG。我們做個(gè)實(shí)際的模

33、擬:一個(gè)同事在沒(méi)有告訴我的情況下把我們共同使用的一個(gè)文件xxzr_hr_emp.txt修改成xxzr_hr_emp_v1.txt ,那么他已經(jīng)把 xxzr_hr_emp_v1.txt新文件commit到服務(wù)器了,而我依 舊使用xxzr_hr_emp.txt文件名,那么在我工作完commit時(shí)會(huì)發(fā)生什么呢?在我commit時(shí)就報(bào)錯(cuò)了,說(shuō)是提交失敗,這時(shí)失敗的原因就是沖突導(dǎo)致的,看來(lái)解決的辦法在服務(wù)器是不行了,只能在本機(jī)了,這時(shí)我就需要做一次Pull操作,把遠(yuǎn)程庫(kù)拉下來(lái),合并完解決沖突后再 commit上去。 拉到本機(jī):這樣邏輯沖突自己解決了,他會(huì)把我以前的 xxzr_hr_emp.txt文件名更

34、新為xxzr_hr_emp_v1,然后這是我就可以正常的commit 了。5.2 樹(shù)沖突文件名修改造成的沖突,稱為樹(shù)沖突。比如,a用戶把文件改名為a.c, b用戶把同一個(gè)文件改名為b.c,那么b將這兩個(gè)commit合并時(shí),會(huì)產(chǎn)生沖突。模擬一下吧:開(kāi)始我和另一個(gè)同事的版本庫(kù)是一樣的我們都有一個(gè)xxzr_hr_v1.pck的文件,但是我們兩個(gè)沒(méi)有互相溝通都是把這個(gè)文件名給改了,我改成xxzr_hr_area_person.pck,他改成xxzr_hr_tmp_v1.pck ,我一個(gè)一個(gè)人改了以后是可以正常push的,那么在我完成后他再 push毫無(wú)疑問(wèn)他push時(shí)遇到麻煩了,遇到的錯(cuò)誤和邏輯錯(cuò)誤的

35、報(bào)錯(cuò)是一樣的,這時(shí)看一下該怎 么解決:首先和前面一樣的他做一次Pull操作,此時(shí)沒(méi)有顯示任何的異常:D:'gittestprojectl - Gi: Connmand Prog- TcrtoiseGitWriting objectsgi t. exe pnzii pEQg'Tess '*CEzqj.n" nsg tei zznaatcrCaujitirig Gtjectsz 己/ 。匚口鼻.CajnpTessin.j objects 7 100%3/3 ;Writing abjecta: 100% (3/3)Writing obj acts: 100 (3&l

36、t;S), 336 byt«i, don«Total 3 deLta 2) t zeused 0 <lela 0)Create piUl tequsst CloseAhort但是到他的工作目錄一看,就不一樣了:% abcd.txt*> ghhh.txt比 xx2r h r area p erso n. p elc2013/4/15 11:252013/4/15 11:292013/4/15 12:10立志文檔PCK文件xxzr h r tm p vl.p 匚 k2013/4/15 12:10 PCK 文件他就發(fā)現(xiàn)他重命名的文件名上多了一個(gè)嘆號(hào),又在該目錄下面多了

37、一個(gè)新文件,這樣的原因在于兩人同時(shí)修改了同意文件名,這時(shí)他發(fā)現(xiàn)了錯(cuò)誤的原因,就找到我和我溝通到底該用誰(shuí)的文件名,最終我們通過(guò)溝通決定使用我的xxze_hr_area_personp.pck文件名(我們的需求是關(guān)于地域人員分布的統(tǒng)計(jì)),把他的那個(gè)有嘆號(hào)的文件直接刪除再做一次提交就好了。要是我們?cè)谛薷奈募麜r(shí)做一次溝通是不是沖突直接就避免了 ?所以說(shuō)團(tuán)隊(duì)協(xié) 作中溝通真的很重要!5.3 內(nèi)容沖突內(nèi)容沖突時(shí)最常見(jiàn)的,也是一種不可避免的沖突現(xiàn)象。兩個(gè)用戶修改了同一個(gè)文件的同一塊區(qū)域,git會(huì)報(bào)告內(nèi)容沖突。模擬并解決:我和另一同事對(duì)同一文件的同一塊做了修改,那么他提交完畢我提交時(shí)就會(huì)產(chǎn)生沖突,我們修改的文

38、件是xxzr_hr_area_person.pck ,先看一下報(bào)的錯(cuò)誤吧:D;g itAte stp nojectl - Git Coming nd Progress - Tortoi5eGrt。回|取! E&jeetedsnaatei 一* mas1七日/ mc-n-faat-foraarderror: figLllsd to push so ref? to TEoat)口-17 工!5 1,石芭二 pra j ngF&l, 一 qit .卜工口匕; Updm匚疆斗 口鼻工號(hào) rejacted 匕耗umu*號(hào) Khe tip of yom cucent 事工noh ia be

39、hind:ilnt: its ere口匚si counterpirtrge thechAngeg (a . gpix pull*)CloseAbort看見(jiàn)錯(cuò)誤沒(méi)提示我要執(zhí)行一次pull操作,那么我就執(zhí)行以下看看結(jié)果是什么:提示了沖突在 repo/xxzr_hr_area_person.pck文件這,解決了沖突再commit結(jié)果。見(jiàn) abcd.txt2013/4/15 10:21 文本加1KB|qj ghhh.txt2013/4/13 16:5 立本史檔1 KB| 一1 xxzr hr 3fa prrt3n.p)k2013/4/15 14:12 PCE 文件25 KB發(fā)現(xiàn)xxzr_hr_area

40、_person.pck文件上面有個(gè)黃色的嘆號(hào),這就表示文件有沖突,現(xiàn)在開(kāi)始解決沖突,選中xxzr_hr_area_person.pck文件右鍵選擇"TortoiseGit",然后選擇"Resolves"開(kāi) 始解決沖突:這是雙擊一下那個(gè) xxzr_hr_area_person.pck文件會(huì)看到詳細(xì)的改動(dòng)情況:左上部分是別人改動(dòng)的結(jié)果,右上部分是我改動(dòng)的,下面是需要我手工做的最終的合并情況, 這里就是我要把改動(dòng)的結(jié)果寫到帶有紅色問(wèn)號(hào)那行就行了,合并完成后保存退出, 然后先提交到本機(jī)再push操作,這樣內(nèi)容沖突的解決完畢。提示:如果這個(gè)文件是大家共同的,那么請(qǐng)

41、千萬(wàn)記住當(dāng)你每次有一個(gè)小的改動(dòng)時(shí), 立即push到服務(wù)器,這樣的話沖突解決起來(lái)也簡(jiǎn)單,快捷。6 Git分支管理策略相比同類軟件,Git有很多優(yōu)點(diǎn)。其中很顯著的一點(diǎn),就是版本的分支( branch )和合并(merge ) 十分方便。有些傳統(tǒng)的版本管理軟件,分支操作實(shí)際上會(huì)生成一份現(xiàn)有代碼的物理拷貝,而 Git只生 成一個(gè)指向當(dāng)前版本(又稱“快照”)的指針,因此非??旖菀子谩5?,太方便了也會(huì)產(chǎn)生副作用。如果你不加注意,很可能會(huì)留下一個(gè)枝節(jié)蔓生、四處開(kāi)放的版本庫(kù), 到處都是分支,完全看不出主干發(fā)展的脈絡(luò)。Vincent Driessen提出了一個(gè)分支管理的筮曜,它可以使得版本庫(kù)的演進(jìn)保持簡(jiǎn)潔,主

42、干清晰,各個(gè)分支各司其職、井井有條。理論上,這些策略對(duì)所有的版本管理系統(tǒng)都適用,Git只是用來(lái)舉例而已。6.1 Master分支(主分支)首先,代碼庫(kù)應(yīng)該有一個(gè)、且僅有一個(gè)主分支。 所有提供給用戶使用的正式版本,都在這個(gè)主分支上 發(fā)布。Git主分支的名字,默認(rèn)叫做 Master。它是自動(dòng)建立的,版本庫(kù)初始化以后,默認(rèn)就是在主分支在進(jìn)行開(kāi)發(fā)。我們可以給主分支上的每個(gè)版本庫(kù)打上tag ,為了更好的管理。6.2 開(kāi)發(fā)分支Develop主分支只用來(lái)分布重大版本,日常開(kāi)發(fā)應(yīng)該在另一條分支上完成。 我們把開(kāi)發(fā)用的分支,叫做DevelopDevelopMasterTag0.1Tag0.2Tag03如果想正式對(duì)外發(fā)布,就在 Master分支上,對(duì)Develop分支進(jìn)行"合并"(merge )6.3 臨時(shí)性分支前面講到版

溫馨提示

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