版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、TortoiseSVN教程1 引言 l 團(tuán)隊(duì)開(kāi)發(fā)?l 修改文件而他人也在改?你修改的內(nèi)容丟失?l 保存了文件可又后悔了?想得到幾天前的版本? l 發(fā)現(xiàn)了bug,想知道bug何時(shí)引入的? 這些問(wèn)題都遇到了?那就使用TortoiseSVN吧。TortoiseSVN是Subversion的客戶端。Subversion是針對(duì)CVS的不足而開(kāi)發(fā)的版本控制系統(tǒng)。這些提升主要包括以下的一些方面:1 目錄、文件以及改名等元數(shù)據(jù)的版本化不同于 CVS 只關(guān)心文件的內(nèi)容以及文件是否存在,所有文件、目錄的相關(guān)操作都是被版本化的,例如文件的改名、拷貝等等;2 提交操作是真正的原子操作在 Subversion 中,提交
2、操作是不可分割的,修訂版本號(hào)是基于每次提交操作而非文件。提交日志被附加在每個(gè)修訂版本中,而不是像 CVS 一樣冗余的進(jìn)行存儲(chǔ);3 可通過(guò) Apache 服務(wù)器提供基于 WebDAV/DeltaV 協(xié)議的支持,該功能可使 Subversion 通過(guò) Apache Web 服務(wù)器使資源庫(kù)更加靈活的在網(wǎng)上進(jìn)行共享,使其在互操作性上大大優(yōu)于 CVS;4 可獨(dú)立運(yùn)行。當(dāng)你不想使用 Apache 2.x 時(shí)候,你也可以使用 Svnserve,它可以以守護(hù)進(jìn)程或者是Windows 下的服務(wù)方式獨(dú)立運(yùn)行;5 分支(Branching)與標(biāo)簽(Tagging)操作是輕量級(jí)的;6 客戶服務(wù)器端分層庫(kù)結(jié)構(gòu)設(shè)計(jì);7
3、資源庫(kù)可以采用數(shù)據(jù)庫(kù)(BerkeleyDB)或者是使用特定格式的文件進(jìn)行存儲(chǔ);8 更有效的對(duì)二進(jìn)制文件進(jìn)行處理。2 基本概念 2.1 版本庫(kù)RepositorySubversion是版本管理的后臺(tái)系統(tǒng),其核心是保存數(shù)據(jù)的版本庫(kù)-repository。 版本庫(kù)用分層的“文件-目錄”文件系統(tǒng)數(shù)來(lái)存儲(chǔ)數(shù)據(jù)。連接到版本庫(kù)的客戶能讀寫(xiě)數(shù)據(jù)。版本庫(kù)是源碼的集中存放處,記錄了你的每一次修改!客戶端可以從版本庫(kù)中取到過(guò)去的版本。圖2.1.典型服務(wù)器/客戶機(jī)模型2.2 版本模型Versioning Models基本問(wèn)題:共享數(shù)據(jù)而不相互覆蓋? 2.2.1 文件共享的問(wèn)題在合作開(kāi)發(fā)中文件共享的問(wèn)題是顯而易見(jiàn)的。
4、圖2.2.要避免的問(wèn)題2.2.2 鎖定-修改-解鎖SolutionVisual SourceSafe采用的就是這種模型。Figure2.3.鎖定-修改-解鎖方案問(wèn)題: l 鎖定可能引起管理問(wèn)題: 如忘記解鎖別人無(wú)法使用。 l 鎖定造成不必要的串行作業(yè)。 l 鎖定可引起安全問(wèn)題。 2.2.3 拷貝-修改-合并解決方案Subversion和CVS等采用拷貝-修改-合并模型。項(xiàng)目成員從版本庫(kù)讀取個(gè)人的工作拷貝,所有項(xiàng)目成員并行地在工作拷貝上工作,然后合并在一起形成新的版本(version)。 圖2.4.拷貝-修改-合并方案Figure2.5. 拷貝-修改-合并方案Continued如果修改不重疊,T
5、ortoiseSVN可自動(dòng)合并。修改重疊則引起沖突(conflict)。沖突只能靠手工修改! 這種模型好像很混亂,但實(shí)際上很好用。解決沖突的時(shí)間大大小于因鎖定而等待的時(shí)間。解決沖突的最好辦法是溝通。 2.3 實(shí)際操作Subversion2.3.1 工作拷貝Working CopiesSubversion的工作拷貝就是包含文件的本地目錄樹(shù),與一般目錄的樹(shù)狀結(jié)構(gòu)相同,可以進(jìn)行任意的工作!工作結(jié)束后可將新的文件“發(fā)布”到版本庫(kù)。工作拷貝中包含了由Subversion創(chuàng)建和維護(hù)的一個(gè)特殊的子目錄.svn ,該目錄保存了重要的信息。不要?jiǎng)h除這個(gè)目錄! 例如,假定你的版本庫(kù)包含兩軟件項(xiàng)目:paint和ca
6、lc。 圖2.6.版本庫(kù)文件系統(tǒng)用檢出(checkout)得到工作拷貝。 2.3.2 Repository URLs:版本庫(kù)URLSubversion的版本庫(kù)借助不同方法得到:本地磁盤、網(wǎng)絡(luò)協(xié)議等: Table2.1.Repository Access URLsSchemaAccess Methodfile:/本地磁盤. http:/利用WebDAV 協(xié)議訪問(wèn)Apache SVN 服務(wù)器. https:/同http:/, SSL 加密 svn:/直接訪問(wèn) svnserver svn+ssh:/經(jīng)過(guò)認(rèn)證加密訪問(wèn)svnserver。例:File:/c:/svn/prj/template,File:
7、/c:/svn/prj/template/Distc:/svn/prj/template是版本庫(kù)的目錄,Dist是版本庫(kù)的子目錄名稱http:/build:88/prj/templatehttp:/build:88/prj/template/Dist http:/build:88是Apache設(shè)置的URL,prj是通過(guò)Apache設(shè)置的位置,template是版本庫(kù)名稱,Dist是目錄名2.3.3 版本Revisionssvn commit 操作提交修改。版本庫(kù)接受一次提交后,在文件系統(tǒng)樹(shù)創(chuàng)建新的狀態(tài),稱之為版本revision。每個(gè)版本是一個(gè)遞增的自然數(shù)。圖2.7.版本庫(kù)全局版本號(hào)版本號(hào)代表
8、整個(gè)版本庫(kù)而非單個(gè)文件! 工作拷貝如何跟蹤版本庫(kù)?Subversion將下列兩種管理信息記錄在.svn/: 工作版本 working revision 從版本庫(kù)更新的時(shí)間。 通過(guò)這些信息,在與版本庫(kù)交換信息后,Subversion可得出文件的四種狀態(tài): l 未修改,新版本,提交無(wú)效 l 本地修改,新版本,可提交,更新無(wú)效l 未修改,但在版本庫(kù)中已修改,過(guò)期,提交無(wú)效,可更新l 本地修改,在版本庫(kù)中已修改,過(guò)期。先更新,修改沖突,再提交。版本庫(kù)中的最新版本是用HEAD Revision標(biāo)志的,每次更新操作都是將HEAD Revision更新到工作目錄。工作目錄可以通過(guò)Update to revi
9、sion指令回溯到以前版本,這時(shí)工作目錄中的版本與版本庫(kù)中的HEAD Revision是不一致的,如果做了本地修改,再進(jìn)行提交時(shí),由于SVN不允許從當(dāng)前版本不是HEAD Revision版本的工作目錄提交,這時(shí)就會(huì)出現(xiàn)“過(guò)期”錯(cuò)誤,需要首先執(zhí)行Update,即將HEAD Revision更新到本地,解決沖突后,才能提交。3 服務(wù)器設(shè)置3.1 基于Apache的服務(wù)器這是設(shè)置Subversion服務(wù)器的最好方法。優(yōu)點(diǎn): l 利用WebDAVl 用瀏覽器瀏覽版本庫(kù) l 認(rèn)證l 安全l 線路壓縮3.2 基于Svnserve的服務(wù)器優(yōu)點(diǎn):l 不需要安裝Apache服務(wù)器l 容易安裝l 速度較快l 適合
10、本地版本管理 4 版本庫(kù)4.1 用TortoiseSVN創(chuàng)建版本庫(kù)圖4.1.沒(méi)有版本控制的文件夾TortoiseSVN菜單1. 進(jìn)入資源管理器 2. 創(chuàng)建版本庫(kù)的子目錄,如C:/SVNRepository。3. 在新建的目錄中右鍵 TortoiseSVN- Create Repository here. 可用FSFS和BDB兩種格式創(chuàng)建。注意:不要編輯版本庫(kù)中的文件! 本地進(jìn)入方式:file:/C:/SVNRepository/ 4.2 版本庫(kù)備份最簡(jiǎn)單的辦法是備份版本庫(kù)文件夾!推薦辦法:svnadmin hotcopy path/to/repository path/to/backup -c
11、lean-logs5 日常應(yīng)用指南5.1 開(kāi)始5.1.1 Tortoise設(shè)置1 忽略文件在SVN 的Setting的General中,設(shè)置需要忽略的文件以便忽略掉一些臨時(shí)的、無(wú)用的文件,常被忽略的文件有*.opt *.ncb *.suo *.plg *.pch *.idb *.pdb *.scc *.obj Debug Release *.o *.bin *.out *.ilk *.aps debug release *.clw *.bak。每個(gè)程序員可以根據(jù)自己的需要進(jìn)行修改忽略文件,上面只是使用VC+與Tornado編程時(shí)常用的一些忽略文件。圖5.1.Tortoise忽略文件設(shè)置圖2 合
12、并比較工具在Merge Tool中可以選擇用來(lái)合并的工具,強(qiáng)烈推薦用Araxis Merge。在Setting-Diff中填入C:Program FilesAraxisAraxis Merge v6.5Merge.exe;在Setting-Merge的選項(xiàng)中,填入C:Program FilesAraxisAraxis Merge v6.5Merge.exe %theirs %mine %merged ;其中C:Program FilesAraxisAraxis Merge v6.5Merge.exe是指合并工具的路徑,%theirs %mine %merged分別指.將要合并到主干的分支,主干
13、,及合并后的結(jié)果。圖5.2.Tortoise合并比較工具設(shè)置圖5.1.2 操作TortoiseSVN圖5.3TortoiseSVN右鍵菜單所有TortoiseSVN命令均可以在資源瀏覽器的右鍵菜單中執(zhí)行。 5.1.3 認(rèn)證如果版本庫(kù)設(shè)置了權(quán)限保護(hù),則會(huì)彈出認(rèn)證對(duì)話框。圖5.4認(rèn)證對(duì)話框如果使用Windows域認(rèn)證,用戶名前需要包括域名,如MYDOMAIN/johnd. 5.2 數(shù)據(jù)導(dǎo)入版本庫(kù)5.2.1 版本庫(kù)結(jié)構(gòu)Repository Layout根據(jù)不同需要來(lái)建立版本庫(kù)的結(jié)構(gòu):1. 創(chuàng)建新的空文件夾。 2. 創(chuàng)建目錄結(jié)構(gòu) 先不放文件! 3. 右鍵菜單,點(diǎn)擊導(dǎo)入(Import.)將結(jié)構(gòu)加入到版本
14、庫(kù)中。注意:文件夾的名字不導(dǎo)入版本庫(kù)。通過(guò)版本庫(kù)瀏覽器(Repo Browser)可直接瀏覽版本庫(kù)結(jié)構(gòu)。 5.2.2 導(dǎo)入Import在將項(xiàng)目文件導(dǎo)入到版本庫(kù)前,先進(jìn)行下列操作:1. 刪除與項(xiàng)目無(wú)關(guān)的中間文件如生成的臨時(shí)文件*.obj等。 如果設(shè)置了忽略的文件類型,或忽略的目錄,可不刪除。2. 在文件夾中組織文件。 在資源瀏覽器中進(jìn)入項(xiàng)目頂層文件夾,右鍵得到快捷菜單,選擇導(dǎo)入 (Import.) ,出現(xiàn)對(duì)話框: 圖5.5導(dǎo)入對(duì)話框在對(duì)話框中輸入倉(cāng)庫(kù)的URL。導(dǎo)入信息(import message)作為版本日志信息。 注意只要點(diǎn)擊確定OK TortoiseSVN將把整個(gè)目錄及目錄內(nèi)的文件加入到版
15、本庫(kù)中。頂層文件夾的名字不會(huì)加入到版本庫(kù)中,但其他子文件夾的名字均加入以保持版本庫(kù)的結(jié)構(gòu)。該項(xiàng)目的文件現(xiàn)在處在版本庫(kù)版本控制中。請(qǐng)注意:目前的本地項(xiàng)目文件夾不處在版本控制下!要得到版本控制,必須檢出Checkout版本庫(kù)得到工作拷貝!5.2.3 特殊文件Special Files有時(shí)你有一個(gè)包含用戶特定數(shù)據(jù)的文件需要在版本控制下,這意味著每個(gè)開(kāi)發(fā)人員需要修改它以適應(yīng)他的本地設(shè)置,用戶每次提交均要保存這文件的變化,因此對(duì)這類文件進(jìn)行版本控制很困難。對(duì)此建議使用template 文件,創(chuàng)建一共文件,它包含所有開(kāi)發(fā)人員需要信息,將它加入到版本控制下,每個(gè)開(kāi)發(fā)人員均可檢出這個(gè)文件, 復(fù)制并重新命名,然
16、后修改就沒(méi)有問(wèn)題了。不需要加入版本控制的文件可通過(guò)設(shè)置Subversion 特性(property) svn:ignored 來(lái)忽略。5.3 檢出工作拷貝從版本庫(kù)執(zhí)行檢出(checkout)就能得到工作拷貝。 在資源瀏覽器中選定將要存放工作目錄的拷貝,右鍵彈出快捷菜單,選擇C出Checkout.,將出現(xiàn)對(duì)話框:(如果該目錄已在版本控制下,則沒(méi)有檢出而是更新(Update)和提交(Commit)圖5.6檢出對(duì)話框如果文件夾不存在,會(huì)自動(dòng)創(chuàng)建。 注意你只能將文件檢出到一個(gè)空目錄里。如果你想檢出剛導(dǎo)入的文件,Subversion將報(bào)錯(cuò)。你只能將文件檢出到另一個(gè)目錄或先刪除已經(jīng)存在的源文件再執(zhí)行檢出。
17、 5.4 導(dǎo)出Exporting 如果不想包含.svn ,可將版本庫(kù)導(dǎo)出到一個(gè)空目錄。這時(shí)所有文件不處在版本控制下。方法:右鍵,選擇TortoiseSVN- 導(dǎo)出(Export.)。 5.5 將別人的改動(dòng)更新到你的工作拷貝 圖 5.7已完成更新的進(jìn)度對(duì)話框有時(shí)你想將他人的改動(dòng)合并到你本地的工作拷貝。從服務(wù)器上取改動(dòng)到本地的過(guò)程叫更新updating。 更新也許是單個(gè)文件、或選擇的一組文件、或整個(gè)目錄。在資源瀏覽器中選擇待更新的文件或目錄, 右鍵并選擇更新Update ,他人的修改將合并到你本地的文件中,你所做的改動(dòng)保存在同一文件中。這時(shí)版本庫(kù)沒(méi)有受變化,即合并只在本地進(jìn)行。如果你和他人改動(dòng)的是
18、相同部分但改動(dòng)不一樣,就會(huì)在更新過(guò)程中產(chǎn)生沖突 conflicts。沖突在對(duì)話框中用紅色表示,雙擊后用外部編輯器解決沖突。 TortoiseSVN也允許你將工作拷貝更新到指定版本。用更新至版本Update to Revision. 命令,在彈出的對(duì)話框中輸入指定的版本號(hào)即可。 注意如果你更新到指定版本,再提交是將出現(xiàn)out of date 錯(cuò)誤!如果你想撤銷修改并從以前的版本開(kāi)始工作,你必須使用從顯示日志Show Log對(duì)話框中選擇復(fù)原自此版本以來(lái)的變更Revert changes from this revision 命令或使用快捷菜單中的合并Merge. 菜單命令。更新至版本Update
19、to Revision. 命令允許復(fù)原至低版本。比如你的工作目錄版本是100,你想復(fù)原至版本50-直接填寫(xiě)在復(fù)原對(duì)話框中填寫(xiě)復(fù)原至版本50。通常,不復(fù)原單個(gè)文件,確實(shí)需要,從記錄對(duì)話框(Log)選擇儲(chǔ)存版本至Save revision to. 命令。5.6 解決沖突 有時(shí)你從版本庫(kù)更新文件會(huì)有沖突。沖突產(chǎn)生于兩人都修改文件的某一部分。解決沖突只能靠人而不是機(jī)器。當(dāng)產(chǎn)生沖突時(shí),你應(yīng)該打開(kāi)沖突的文件,查找以開(kāi)始的行。沖突部分被標(biāo)記: revisionSubversion為每個(gè)沖突文件產(chǎn)生三個(gè)附加文件: filename.ext.mine 更新前的本地文件。 filename.ext.rOLDREV
20、 你作改動(dòng)的基礎(chǔ)版本。filename.ext.rNEWREV 更新時(shí)從版本庫(kù)得到的最新版本。使用外部合并工具或使用快捷菜單的編輯沖突Edit Conflict 命令來(lái)解決沖突。然后從快捷菜單中執(zhí)行已解決Resolved 命令,將改動(dòng)提交到版本庫(kù)。請(qǐng)注意,解決命令并不解決沖突,而僅僅是刪除filename.ext.mine and filename.ext.r* 文件并允許你提交。5.7 將本地做的改動(dòng)提交到版本庫(kù)這個(gè)過(guò)程叫提交committing 。 在提交前需要確認(rèn)工作拷貝是最新的。用更新Updates 或先用檢查更新Check For Updates 檢查變更了的文件。如果你的工作拷貝已
21、更新且沒(méi)有沖突,可用快捷菜單中的提交Commit. 完成提交過(guò)程。 圖5.8提交對(duì)話框如果某文件不想在版本控制下,取消復(fù)選框即可。 5.7.1 提交框中不需要控制的文件許多不需要版本控制文件如obj文件等也出現(xiàn)在提交對(duì)話框中,解決辦法: 在服務(wù)器端編輯配置文件config,將不需要控制的文件 (或通配符)添加到排除文件列表。其影響是全局的。 通過(guò)快捷菜單命令A(yù)dd to ignore list將文件添加到svn:ignore 列表。只影響到本目錄。圖5.9提交進(jìn)度5.8 獲得狀態(tài)信息 通過(guò)圖標(biāo)可知道文件的狀態(tài):修改/新增/刪除/換名。5.8.1 圖標(biāo)圖5.10資源瀏覽器顯示的圖標(biāo)新近檢出的工作
22、拷貝。Subversion狀態(tài)是正常normal. 文件已修改,需要提交到版本庫(kù)。Subversion狀態(tài)是已修改modified。在更新文件后自己的修改與他人的修改沖突。狀態(tài)是沖突conflict。 文件(夾)被鎖定且狀態(tài)是正常normal,提醒你需要解鎖才能允許其他用戶提交自己修改的版本。 文件(夾)將從版本控制中刪除,版本控制將忽略這些文件(夾)。狀態(tài)是刪除deleted。 將加入到版本控制的文件或文件夾。狀態(tài)是新增added 。 5.8.2 版本庫(kù)狀態(tài) Status Of The Repository圖5.11檢查更新想知道別人修改了哪些文件?用檢查更新.(Check For Upda
23、tes.) 命令。彈出的對(duì)話框?qū)@示出你的修改或版本庫(kù)中別人的修改,這樣可在更新前檢查是否有沖突。 提交Commit. 命令也可用來(lái)顯示本地的修改,如果不想實(shí)際提交到版本庫(kù),點(diǎn)擊取消Cancel 即可。 5.9 加入新文件或目錄圖5.12加入快捷菜單開(kāi)發(fā)中新增文件或文件夾,如需要加入到版本控制,選擇加入Add;如果不想要加入到版本控制,選擇加入忽略列表Add To Ignore List 5.10 忽略文件和目錄圖5.13不需要版本控制快捷菜單大多數(shù)項(xiàng)目會(huì)有一些文件(夾)不需要版本控制,如編譯產(chǎn)生的*.obj, *.lst,等。每次提交,TortoiseSVN提示那些文件不需要控制,因此最好是
24、在項(xiàng)目中將這些中間文件或編譯結(jié)果加入忽略列表。 5.10.1 全局忽略列表The Global Ignore List 忽略文件的另一個(gè)辦法是加入全局忽略列表global ignore list。 全局忽略列表是客戶端特性,他影響所有項(xiàng)目,但只在該客戶端PC起作用。通常用 svn:ignore 會(huì)更好因?yàn)樗鼘?duì)所有客戶起作用。5.11 刪除、換名和移動(dòng) 從快捷菜單的TortoiseSVN 子菜單進(jìn)入刪除、改名等操作 Figure5.14版本化文件(夾)資源管理器上下文菜單如果你想在工作拷貝中移動(dòng)文件: 1. 選擇待移動(dòng)的文件和文件夾;2. 按住鼠標(biāo)右鍵拖動(dòng)文件(夾)到工作拷貝內(nèi)的新地方; 3.
25、松開(kāi)右鍵 4. 在彈出菜單中選擇move files in Subversion to here 如果你在資源管理器中象往常那樣刪除了文件而沒(méi)有在版本控制中刪除,提交對(duì)話框?qū)⑻崾具@些文件并讓你在提交前在版本控制中刪除它們。5.12 撤銷修改如果你想撤銷自上次更新后所作的改動(dòng),選擇文件,點(diǎn)擊鼠標(biāo)右鍵,在快捷菜單的TortoiseSVN子菜單中選擇復(fù)原revert ,在對(duì)話框中選擇你想要復(fù)原的文件,點(diǎn)擊確定OK. 圖5.15復(fù)原對(duì)話框5.12.1 撤銷已提交的變更復(fù)原Revert 只撤銷本地的改動(dòng),而不撤銷已提交文件的改動(dòng)。如果你想撤銷某一版本的全部變更,可從版本記錄對(duì)話框中處理。 5.13 版本
26、日志對(duì)話框?qū)γ看翁峤坏母?,你必須同時(shí)提供更改的日志,以便日后能找出為什么/如何改動(dòng)。5.13.1 彈出日志對(duì)話框日志對(duì)話框顯示所有日志信息并顯示在3個(gè)格里: l 頂格顯示版本號(hào),包括日期,提交者等。 l 中格顯示上格所選版本的完整日志Log。 l 底格顯示該版本改動(dòng)的文件列表。 圖5.16日志對(duì)話框彈出Log日志對(duì)話框的方式: 從TortoiseSVN 子快捷菜單 從屬性頁(yè) 更新進(jìn)度對(duì)話框。5.13.2 得到更多信息圖5.17日志對(duì)話框頂層上下文快捷菜單在頂格還提供快捷菜單,可以允許你通過(guò)如下操作得到版本的更多信息:l 將選定的版本于當(dāng)前工作拷貝進(jìn)行比較。可以設(shè)置缺省比較工具。l 保存選定版
27、本的文件。l 從選定版本創(chuàng)建branches/tags。l 將選定版本的文件(夾)更新到當(dāng)前工作拷貝。從某一版本更新的時(shí)候最好選擇對(duì)整個(gè)目錄進(jìn)行更新,以免出現(xiàn)版本失配情況。l 撤銷對(duì)選定版本發(fā)生的修改。如果工作目錄中的文件已經(jīng)被改變,就可能需要解決撤銷修改時(shí)產(chǎn)生的沖突。通過(guò)選擇兩個(gè)版本日志記錄可以允許你對(duì)兩個(gè)版本進(jìn)行比較。需要注意的地方:5.14 分支/標(biāo)記 版本控制的作用是能將變更隔離成獨(dú)立的方向,稱之為分支branch. 分支用于主發(fā)布前嘗試新特性。 另一特性是標(biāo)記特殊版本,以利于在任何時(shí)間重新創(chuàng)建環(huán)境。這個(gè)過(guò)程叫標(biāo)記tagging. Subversion并沒(méi)有特別的用于分支和標(biāo)記的命令,
28、而是用cheap copies代替。Cheap copies有點(diǎn)像連接links。在由工作拷貝創(chuàng)建branch/tag前,你必須確認(rèn)已更新版本庫(kù)。 創(chuàng)建branch/tag非常簡(jiǎn)單: 圖5.18分支/標(biāo)記對(duì)話框從工作目錄父文件夾點(diǎn)出快捷鍵,選擇分支/標(biāo)記Branch/Tag. ,輸入版本庫(kù)中存放分支/標(biāo)記路徑的URL,在原來(lái)輸入trunk 的地方輸入tags/tagname ,這里tagname 可能是ProjectName_v1.10. C:/SVNRepository/trunk/ProjectName/. C:/SVNRepository/trunk/AnotherProject/. C
29、:/SVNRepository/branches/ProjectName_SpecialDebugBuildBasedOn_v1.09/ C:/SVNRepository/tags/ProjectName_v1.10點(diǎn)擊OK ,Subversion在你選擇的版本庫(kù)的目錄內(nèi)創(chuàng)建了一個(gè)cheap copy。創(chuàng)建Branch / Tag不影響你的工作目錄。5.14.1 檢出或切換To Checkout or to Switch. 這確實(shí)是個(gè)問(wèn)題!由于Checkout檢出了分支中的所有數(shù)據(jù), 轉(zhuǎn)向Switch. 只是轉(zhuǎn)移你工作目錄中變化了的數(shù)據(jù)。為了能在新的的工作拷貝上工作,你可以: 再次執(zhí)行檢出Ch
30、eckout 。你可以檢出任意次到你本地硬盤上的任何地方。 轉(zhuǎn)換到新創(chuàng)建的版本庫(kù)拷貝上。只需執(zhí)行切換Switch. 在下面的對(duì)話框中輸入你的分支的URL,保留“Head Revision”點(diǎn)擊 OK,你的工作目錄將切換到新的分支/標(biāo)記branch / tag. 切換與更新,不會(huì)丟失你在本地所作的修改,而是將未提交的修改合并。 Figure5.19切換對(duì)話框分支與標(biāo)記的不同點(diǎn): 標(biāo)記用于創(chuàng)建項(xiàng)目特殊階段的靜態(tài)快照 不再用于開(kāi)發(fā) 而分支是用于開(kāi)發(fā)的。這是我們建議使用/trunk /branches /tags 的理由。 如果你在工作拷貝上修改并提交,則在分支的修改體現(xiàn)在分支上而不是主干上。 將分支
31、合并到主干上合并過(guò)程是項(xiàng)目管理關(guān)鍵及核心所在,通常合并場(chǎng)景是這樣的:開(kāi)發(fā)人員分別在trunk及branches進(jìn)行修改。當(dāng)某一branch上已經(jīng)完成新特性實(shí)現(xiàn)或者清除BUG等工作,需要將修改的內(nèi)容與trunk的內(nèi)容進(jìn)行同步,這樣的同步過(guò)程就是合并。合并過(guò)程的實(shí)質(zhì)是svn diff過(guò)程,通過(guò)diff找到branches所做的所有修改,將這些修改合并到當(dāng)前trunk work copy中。需要注意的是,如果直接將branch和trunk進(jìn)行diff合并,會(huì)造成從上次trunk與branch同步之后,trunk所做的修改都會(huì)被移除,這不是我們所期望的結(jié)果。圖5.20合并對(duì)話框而且理解起來(lái)會(huì)有些困難,
32、需要結(jié)合實(shí)際操作才能掌握其基本方式,請(qǐng)參考TortoiseSVN版本管理快速入門。 5.15 創(chuàng)建并應(yīng)用補(bǔ)丁Creating and Applying Patches如果誰(shuí)都可以修改,項(xiàng)目將沒(méi)完沒(méi)了,永遠(yuǎn)不會(huì)穩(wěn)定下來(lái)。怎么辦呢?通過(guò)“補(bǔ)丁patch”!將補(bǔ)丁提交的具有寫(xiě)權(quán)限開(kāi)發(fā)團(tuán)隊(duì),他們先審查補(bǔ)丁,再?zèng)Q定是否提交到版本庫(kù)。 補(bǔ)丁文件僅顯示工作拷貝和基礎(chǔ)版本的差異。 5.15.1 創(chuàng)建補(bǔ)丁文件首先你需要測(cè)試你的修改是否正確,然后用創(chuàng)建補(bǔ)丁Create Patch. 而不是使用提交Commit. ,這將創(chuàng)建包含改動(dòng)的文件。 5.15.2 套用補(bǔ)丁文件 5.16 重新裝入工作拷貝 Figure5.2
33、1重定位對(duì)話框如果因?yàn)槟撤N原因版本庫(kù)修改位置,你需要使用重新定位命令。 5.17 版本庫(kù)瀏覽器The Repository Browser 直接在版本庫(kù)上工作! 圖5.22版本庫(kù)瀏覽器進(jìn)入版本庫(kù)瀏覽器后,使用快捷菜單! 5.18 誰(shuí)動(dòng)了我的代碼?Figure5.23注解/譴責(zé)對(duì)話框有時(shí)你不但要知道那些代碼改動(dòng)了,還要知道誰(shuí)改動(dòng)的!使用追根溯源(譴責(zé))Blame. 即可!將Blame翻譯成譴責(zé)真不好,其意思只是追根溯源圖5.24.TortoiseBlame使用內(nèi)建在TortoiseSVN中的TortoiseBlame可非常方便地查看修改的歷史 5.19 最后TortoiseSVN是開(kāi)源項(xiàng)目,可通
34、過(guò) 獲取最新的源代碼。這些源代碼是我們學(xué)習(xí)的極好的范本! 6 部門版本管理工具使用教程6.1 SVN版本管理的安裝配置1. 安裝TortoiseSVN (TortoiseSVN-2137-win32-svn-1.4.6.msi下載地址)點(diǎn)擊Next 進(jìn)入下一步接受License,點(diǎn)擊Next 進(jìn)入下一步點(diǎn)擊Next 進(jìn)入下一步點(diǎn)擊 Install 安裝若出現(xiàn)這個(gè)界面,手動(dòng)關(guān)閉這些應(yīng)用程序,再點(diǎn)擊Retry沒(méi)必要看它的版本變更記錄,點(diǎn)擊Finish 完成TortoiseSVN的安裝選擇No,沒(méi)必要重啟現(xiàn)在。等安裝完成漢化和配置再重啟不遲。2. 安裝TortoiseSVN中文漢化補(bǔ)丁
35、(LanguagePack-2137-win32-zh_CN.exe下載地址)點(diǎn)擊 Install,進(jìn)行安裝點(diǎn)擊Finish完成 TortoiseSVN中文漢化補(bǔ)丁的安裝。這時(shí)候要重啟你的操作系統(tǒng),不然你進(jìn)行下面的步驟3后得不到中文界面。3. 配置中文界面在空白處單擊鼠標(biāo)右鍵鼠標(biāo)左鍵單擊Settings進(jìn)入設(shè)置頁(yè)面在Language欄選擇中文(簡(jiǎn)體)然后點(diǎn)擊確定,使配置生效?,F(xiàn)在就是我們的母語(yǔ)了。SVN版本管理的基本使用6.1.1 下載項(xiàng)目文件下載項(xiàng)目文件即初始化檢出,版本庫(kù)中文件和目錄的本地映射。建立一個(gè)空的文件夾,這個(gè)很重要,不然會(huì)產(chǎn)生版本文件鎖的沖突。(特別是包含了隱藏目錄
36、.svn)選擇SVN檢出在版本庫(kù)URL欄輸入內(nèi)網(wǎng):9/svn/TWpm外網(wǎng):2/svn/TWpm這里也可以點(diǎn)擊右邊的3個(gè)點(diǎn)圖標(biāo)輸入你的用戶賬號(hào),可以是中文名稱,為了能與公司的LDAP集成,建議用郵箱前面的字符作為賬號(hào),并輸入對(duì)應(yīng)密碼,默認(rèn)密碼123456,如果要修改,可以聯(lián)系lizhanghong可以選擇保存認(rèn)證來(lái)避免每次輸入密碼的麻煩。來(lái)瀏覽服務(wù)器上對(duì)應(yīng)的目錄選擇一個(gè)目錄,URL會(huì)被自動(dòng)變更到這個(gè)目錄也就是說(shuō)你可以不下載整個(gè)根目錄下的文件,而只關(guān)心你要的文件。能瀏覽下載文件,代表你具有可讀的權(quán)限。這里只下載了“00過(guò)程
37、中間庫(kù)”目錄,對(duì)應(yīng)URL為:6.1.2 上傳文件上傳文件即進(jìn)行修改操作,需要具有可寫(xiě)權(quán)限在某個(gè)文件夾里新建了一個(gè)文檔右鍵選擇TortoiseSVN增加來(lái)添加你的新增文件點(diǎn)擊確定再點(diǎn)擊確定注意這里只是標(biāo)記了這個(gè)文件要將被做提交操作,但還沒(méi)有真的提交到服務(wù)器文件會(huì)增加一個(gè)粗體加號(hào)要真的提交,就要執(zhí)行彈出如下窗口勾選你要添加的文件,點(diǎn)擊確定這就完成了提交新增文件的操作??梢哉麄€(gè)提交一個(gè)目錄甚至多個(gè)目錄,只是把這里的文件操作,變?yōu)槟夸浐昧恕_@里就不啰嗦了。提交后刷新,可以看到這個(gè)文件被標(biāo)記了,這說(shuō)明這是未被更改的版本。隨便修改一下,這就說(shuō)明被修改了?,F(xiàn)在可以提交你的修改到服務(wù)器。這里注意:這并不代表你
38、的本機(jī)的版本是最新的,只能說(shuō)明是目前為止,最近一次提交更改后,你沒(méi)有對(duì)其進(jìn)行修改。一個(gè)好的習(xí)慣是,每次都先更新你的目錄,再做修改。如果要?jiǎng)h除這個(gè)文件(目錄),可以把它標(biāo)記為要?jiǎng)h除,再做提交。這里一定注意,做了操作要生效,只有提交成功才算。6.1.3 查看服務(wù)器上的版本點(diǎn)擊HEAD這里可以輸入你的版本號(hào),查詢這個(gè)版本號(hào)的文件。這里僅是查詢,并不是會(huì)把你的文件回溯到那個(gè)版本。可以復(fù)制對(duì)應(yīng)版本的拷貝,做為你現(xiàn)在工作的參考。6.1.4 還原操作如果你進(jìn)行了大量操作,但不想提交,想還原,可以選擇來(lái)選擇對(duì)于修改做還原還原至歷史中的某個(gè)版本,選中某個(gè)文件,點(diǎn)擊“顯示日志”選中你要還原的歷史版本,點(diǎn)擊右鍵“復(fù)
39、原到此版本”。彈出確認(rèn)窗口,選擇“是”。點(diǎn)擊“確認(rèn)”,然后再做提交既可。6.1.5 SVN 恢復(fù)刪除本地刪除指的是在客戶端delete了一個(gè)文件,但還沒(méi)有commit,使用revert來(lái)撤銷刪除。選中要?jiǎng)h除的文件點(diǎn)擊“刪除”文件夾會(huì)打上刪除標(biāo)記如果此時(shí)發(fā)現(xiàn)刪錯(cuò)了文件夾,還沒(méi)有commit。則使用revert來(lái)撤銷刪除。彈出如下窗口都點(diǎn)擊確認(rèn)按鈕即可還原。服務(wù)器刪除通過(guò)本地刪除后提交服務(wù)器的情況。通過(guò)show Log找到被刪的項(xiàng),選中,點(diǎn)擊右鍵-Revert changes from this revision。如上所說(shuō)作刪除標(biāo)記然后提交。點(diǎn)擊提交輸入日志信息,點(diǎn)擊確認(rèn)。則將刪除提交了服務(wù)器。即
40、服務(wù)器上面看不到該文件了。但是并沒(méi)有從版本庫(kù)中刪除,版本庫(kù)中依然保存著該刪除文件或文件夾的信息。點(diǎn)擊show Log 找到被刪的項(xiàng)選中,點(diǎn)擊右鍵-Revert changes from this revision選擇是確認(rèn)則恢復(fù)了該文件夾(或者文件)。然后提交,則將剛才刪除的文件夾提交到了版本服務(wù)器。6.1.6 標(biāo)簽為某個(gè)評(píng)審?fù)ㄟ^(guò)后的文件建立基線。如下圖所示彈出如下窗口,填寫(xiě)日志(最好養(yǎng)成寫(xiě)日志的習(xí)慣)。點(diǎn)擊確認(rèn)。注意:對(duì)于標(biāo)簽的管理,最好作為項(xiàng)目的政策,我們要決定標(biāo)簽所在的位置,確定所有用戶知道如何處理拷貝的目錄(也就是確保他們不會(huì)提交他們)。TortoiseSVN使用簡(jiǎn)介2009-04-2
41、4 來(lái)源: dev.idv.tw 1安裝及下載client 端 2什么是SVN(Subversion)? 3為甚么要用SVN? 4建立一個(gè)Working目錄 5新增檔案及目錄到Repository中 6更新檔案及目錄 7更新至特定版本 8復(fù)制檔案及目錄 9制作Tag或是Release 10快速參考o(jì) 10.1 取得(Checkout)Repositoryo 10.2更新(Update)檔案或目錄o 10.3新增(Add)檔案或目錄o 10.4提交(Commit)修改過(guò)的檔案或目錄o 10.5 Copy/Tag/Branch/Release檔案或目錄6.2 安裝及下載client 端1. 下載W
42、indows 端程序: XP 應(yīng)該使用TortoiseSVN-1.4.x.xxxx-win32-svn-1.4.x.msi 這個(gè)檔案。如果是64-bit 的操作系統(tǒng),則應(yīng)該使用TortoiseSVN-1.4.x.xxxx-x64-svn-1.4.x.msi 這個(gè)檔案。 2. 執(zhí)行下載回來(lái)的TortoiseSVN 安裝程序,就會(huì)進(jìn)行TortoiseSVN 的安裝。正確安裝后,應(yīng)該進(jìn)行一次的重開(kāi)機(jī),以確保TortoiseSVN 的正確無(wú)誤。 3. 安裝成功后,在檔案管理員內(nèi)按下鼠標(biāo)右鍵,應(yīng)該可以看到如右圖所示: 大部分的TortoiseSVN的操作都是透過(guò)檔案管理員及鼠標(biāo)右鍵就可以完成了。如果您之
43、前使用過(guò)TortoiseCVS,應(yīng)該會(huì)對(duì)這種操作方式感到十分親切。 6.3 什么是SVN(Subversion)? 有一個(gè)簡(jiǎn)單但不十分精確比喻: SVN = 版本控制 + 備份服務(wù)器簡(jiǎn)單的說(shuō),您可以把SVN當(dāng)成您的備份服務(wù)器,更好的是,他可以幫您記住每次上傳到這個(gè)服務(wù)器的檔案內(nèi)容。并且自動(dòng)的賦予每次的變更一個(gè)版本。通常,我們稱用來(lái)存放上傳檔案的地方就做Repository。用中文來(lái)說(shuō),有點(diǎn)像是檔案?jìng)}庫(kù)的意思。不過(guò),通常我們還是使用Repository這個(gè)名詞?;旧希谝淮挝覀冃枰幸粋€(gè)新增(add)檔案的動(dòng)作,將想要備份的檔案放到Repository上面。日后,當(dāng)您有任何修改時(shí),都可以上傳到
44、Repository上面,上傳已經(jīng)存在且修改過(guò)的檔案就叫做commit,也就是提交修改給SVN server的意思。針對(duì)每次的commit,SVN server都會(huì)賦予他一個(gè)新的版本。同時(shí),也會(huì)把每次上傳的時(shí)間記錄下來(lái)。日后,因?yàn)槟承┮蛩?,如果您需要從Repository下載曾經(jīng)提交的檔案。您可以直接選擇取得最新的版本,也可以取得任何一個(gè)之前的版本。如果忘記了版本,還是可以靠記憶嘗試取得某個(gè)日期的版本。6.4 為甚么要用SVN? 1. 備份工作檔案是十分重要的。您永遠(yuǎn)不知道計(jì)算機(jī)上的硬盤何時(shí)會(huì)壞掉。根據(jù)經(jīng)驗(yàn)法則再加上摩菲定理,壞事情往往都發(fā)生在最重要的時(shí)刻。例如,要release東西的前一刻,
45、硬盤完全壞掉,無(wú)法修復(fù)。所以,常常備份工作數(shù)據(jù)是非常重要的。大部分公司的server都會(huì)有專門的備份機(jī)制,甚至是異地備援。絕對(duì)比放在自己的計(jì)算機(jī)里頭,或是隨身碟上面來(lái)的安全。2. 版本控管非常重要。您無(wú)法保證手頭上最新版本永遠(yuǎn)都是對(duì)的。很多時(shí)候,在經(jīng)過(guò)數(shù)天努力工作后,您才發(fā)現(xiàn)走錯(cuò)方向。需要將所有的修改回復(fù)到數(shù)天前版本。沒(méi)有幾個(gè)人能夠完全記住自己修改過(guò)什么東西。如果沒(méi)有做好版本控管,那么,最差的狀況就是要全部重來(lái)。3. 伙伴間的數(shù)據(jù)同步也是非常重要的。很多時(shí)候,除了您個(gè)人外,還有其它的伙伴也需要您的檔案。怎么把最新的檔案提供給伙伴呢?用e-mail?根據(jù)經(jīng)驗(yàn),用e-mail是一個(gè)很差的辦法。到了
46、最后,根本就不知道哪一封e-mail才是新的。因?yàn)榭赡苣钚碌膃-mail已經(jīng)被當(dāng)成垃圾信給丟了。別忘了,現(xiàn)在很多e-mail軟件都有anti-spam的功能,說(shuō)不定這些信件都被當(dāng)成廣告信給處理掉了。而且,您也應(yīng)該知道一般檔案如果放在e-mail內(nèi),檔案大小會(huì)變得比較大(通常是原來(lái)的4/3倍以上)。如果每天更新一次,恐怕幾天沒(méi)收信的話,信箱就爆了!4. 如果沒(méi)有一個(gè)好的辦法,備份不同版本是很耗費(fèi)硬盤空間的。例如:您有一個(gè)總共10MB的目錄,使用單純的檔案?jìng)浞?。如果?0個(gè)版本就會(huì)變成100MB。20個(gè)版本就有200MB。如果,不想備份這么多版本,勢(shì)必就是要減少備份的次數(shù)。拉長(zhǎng)備份周期將會(huì)導(dǎo)致數(shù)
47、據(jù)遺失的危險(xiǎn)性增高。把舊的不需要的備份刪除?根據(jù)經(jīng)驗(yàn),只要時(shí)間一拉長(zhǎng),您跟本就不知道一個(gè)月以前的版本是重要或者是不重要。SVN能幫我們解決上面的問(wèn)題嗎?答案是肯定的:1. SVN Repository可以是自己計(jì)算機(jī)上的一個(gè)目錄,或者是隨身碟(不建議這樣用)。當(dāng)然也可以是公司的服務(wù)器。2. SVN有很棒的版本控管機(jī)制。所有上傳的版本都會(huì)幫您記錄下來(lái)。日后您可以隨時(shí)取得某一個(gè)時(shí)刻的版本。而且,也有版本分支及合并等好用的功能。3. SVN可以讓不同的開(kāi)發(fā)者存取同樣的檔案,并且利用SVN Server作為檔案同步的機(jī)制。也就是說(shuō),您有檔案更新時(shí),無(wú)須將檔案寄給您的開(kāi)發(fā)成員。只需要告訴他新的版本已經(jīng)在
48、SVN Server上面,請(qǐng)他自己去SVN Server上面就可以取得最新版本。而且,SVN Server也可以做到當(dāng)您上傳新版本后,自動(dòng)發(fā)信給相關(guān)的成員。4. SVN的存放檔案方式是采用差異備份的方式。也就是說(shuō),他只會(huì)備份有不同的地方。所以很省硬盤空間。此外,他也可以針對(duì)所謂的非文字文件進(jìn)行差異備份。6.5 建立一個(gè)Working目錄 所謂的Working目錄其實(shí)就是您平常用來(lái)存放工作檔案的地方。通常我們會(huì)等到自己的工作做的一個(gè)段落的時(shí)候再進(jìn)行備份。所以我們平常都是在Working目錄下面工作,等到適當(dāng)時(shí)機(jī)在commit到repository中。舉例來(lái)說(shuō),我們想在D盤下面建立一個(gè)名為work
49、ing的目錄。首先先把這個(gè)目錄建立出來(lái)。 此時(shí),這個(gè)目錄應(yīng)該為空的。在檔案管理員中按下右鍵后(您可以在working目錄的icon上按,也可進(jìn)入working目錄后,在空白的地方按),選擇SVN checkout。接著您可以看到如下的畫(huà)面: 首先我們要填入的是repository的位置,對(duì)于SVN來(lái)說(shuō),repository的位置都是URL。由于我們前面已經(jīng)在E槽建立一個(gè)repository,因此,我們現(xiàn)在要在URL of repository這一欄填入svn://svn/HTOA。接著,稍微看一下Checkout directory,這個(gè)字段應(yīng)該要指向您的working目錄。
50、確認(rèn)后,按下OK按鈕,您應(yīng)該可以看到如下的訊息窗口。這樣就表示動(dòng)作完成。按下OK按鈕后,再到您剛剛建立的目錄下。您將會(huì)看到working目錄下面多了一個(gè)名為.svn的目錄(這個(gè)目錄是隱藏的,如果您的檔案管理員沒(méi)有設(shè)定可以看到隱藏目錄,您將無(wú)法看到它) 。 SVN會(huì)在您的工作目錄下,以及其子目錄下建立這個(gè).svn的子目錄。您不應(yīng)該進(jìn)去這個(gè)目錄,尤其不應(yīng)該更動(dòng)這個(gè)目錄下面的任何內(nèi)容。否則會(huì)很可能會(huì)造成SVN無(wú)法正常運(yùn)作。由于,原來(lái)的repository是空的,所以我們現(xiàn)在的working目錄也是空的。如果您現(xiàn)在checkout的是一個(gè)已經(jīng)有內(nèi)容的repository,您將會(huì)看到working目錄下
51、面現(xiàn)在多了許多目錄及檔案。如果您要在一個(gè)已經(jīng)存在的SVN Server上面checkout出上面的檔案,您只需要給定正確的URL以及working目錄的名稱。就可以取得指定的檔案及目錄了。6.6 新增檔案及目錄到Repository中假設(shè)您前面的動(dòng)作都無(wú)誤。現(xiàn)在您開(kāi)始開(kāi)發(fā)一個(gè)新的程序。假設(shè)您開(kāi)發(fā)的程序?qū)⒎旁谇懊娼⒌膚orking目錄下面的my_ prj子目錄。如下所示: 假設(shè)您已經(jīng)編輯好檔案,準(zhǔn)備把他們放到SVN的repository中。您需要在my_prj目錄的icon上面,按鼠標(biāo)右鍵,并且選擇TortoiseSVN-Add: 接著,TortoiseSVN會(huì)把準(zhǔn)備要加入的檔案及目錄,顯示給
52、您看。打勾的就是等下要被加入到Repository中的。如果您有某些檔案或是目錄不想在這次加入,您可以讓該項(xiàng)目不要被勾選。如此,它就不會(huì)被加入到Repository去。 按下OK后,您將會(huì)看到如下的訊息窗口: 這樣就表示成功了。有一點(diǎn)要注意的是,這個(gè)Add的動(dòng)作并未真正的將檔案放到Repository中。僅僅是告知SVN準(zhǔn)備要在Repository中放入這些檔案。此時(shí),如果您透過(guò)檔案管理員查看這些檔案,應(yīng)該會(huì)看到一個(gè)白色紅底的驚嘆號(hào)在檔案icon的下方。 這是表示您的working目錄中的檔案與Repository中的檔案還沒(méi)有同步?,F(xiàn)在我們要多一個(gè)commit的動(dòng)作。讓這些檔案真正的放入到R
53、epository中。您可以在my_prj目錄的icon上或者是my_prj目錄內(nèi)的空白處按下鼠標(biāo)右鍵,叫出如下的選單,并且選擇SVN commit。 緊接著,您將會(huì)看到如下的窗口出現(xiàn): 在這個(gè)窗口中,下半部會(huì)列出一個(gè)清單,讓您清楚的了解到哪些檔案要被commit到repository中。同樣的,如果您有檔案不想在這個(gè)時(shí)候commit到Repository,您可以取消選取的檔案,這樣他們就不會(huì)被commit到Repository中。 在檔案列表的上方是Message欄,您可以在欄中輸入本次commit的目的。這是十分重要的字段,當(dāng)您commit的次數(shù)很多時(shí),可以靠這個(gè)訊息知道版本與版本之間的差
54、異。當(dāng)您輸入好Message,按下OK之后,就可以看到如下的窗口出現(xiàn),通知您已經(jīng)將指定的檔案送到Repository中。 您可以到先前的folder中,確定是否所有的檔案icon都有如下的綠色勾勾在上面,這樣代表您的檔案都正確無(wú)誤的到repository中。 有時(shí)候,因?yàn)閃indows本身的問(wèn)題,您可能會(huì)看到有些icon沒(méi)有變成綠色的勾勾。此時(shí),多按F5幾次,應(yīng)該就可以解決這個(gè)問(wèn)題。如果,仍然不行,表示您之前的commit動(dòng)作真的有問(wèn)題。請(qǐng)仔細(xì)檢查之前的commit動(dòng)作是否正確。 6.7 更新檔案及目錄 為何需要更新?由于版本控制系統(tǒng)多半都是由許多人共同使用。所以,同樣的檔案可能還有人會(huì)去進(jìn)行編輯。為了確保您工
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧旅游運(yùn)營(yíng)方案
- 食品安全四員培訓(xùn)
- 行政服務(wù)中心事項(xiàng)培訓(xùn)
- 防拐演練家長(zhǎng)說(shuō)明
- 土地管理與文化遺產(chǎn)保護(hù)
- 土地評(píng)估股權(quán)協(xié)議
- 工作時(shí)間與休息休假安排
- 村莊旅游民宿招標(biāo)操作指南
- 現(xiàn)代農(nóng)業(yè)房產(chǎn)交易合同范本格式
- 城市景觀橋梁圍欄建設(shè)合同
- 年生產(chǎn)10000噸鵪鶉養(yǎng)殖基地項(xiàng)目可行性研究報(bào)告寫(xiě)作模板-備案審批
- 2024年全國(guó)職業(yè)院校技能大賽中職組(養(yǎng)老照護(hù)賽項(xiàng))考試題庫(kù)-下(判斷題)
- 書(shū)法(校本)教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版語(yǔ)文九年級(jí)上冊(cè)
- 阿米巴經(jīng)營(yíng)知識(shí)競(jìng)賽考試題庫(kù)(濃縮300題)
- 《積極心理學(xué)(第3版)》 課件 第10章 感恩
- 中華優(yōu)+秀傳統(tǒng)文化智慧樹(shù)知到答案2024年浙江金融職業(yè)學(xué)院
- 走進(jìn)紅色新聞歷史現(xiàn)場(chǎng)智慧樹(shù)知到答案2024年延安大學(xué)
- 08D800-8民用建筑電氣設(shè)計(jì)與施工防雷與接地
- 食品配送服務(wù) 投標(biāo)方案(技術(shù)方案)
- 科學(xué)的體育鍛煉課件(圖文)
- 六年級(jí)上冊(cè)英語(yǔ)教案-Unit 8 We shouldn't waste water Period 2 湘少版(三起)
評(píng)論
0/150
提交評(píng)論