金琦
摘要:在軟件開(kāi)發(fā)領(lǐng)域,使用版本控制工具來(lái)追蹤文件變更和協(xié)同團(tuán)隊(duì)進(jìn)行并行開(kāi)發(fā)已成為行業(yè)共識(shí)。分布式版本控制工具Git因其分布式、去中心化以及強(qiáng)大的分支管理、代碼合并等功能而受到開(kāi)發(fā)者的青睞。對(duì)于信息技術(shù)教師而言,Git在編程語(yǔ)言教學(xué)中也發(fā)揮著重要作用。本文提出,通過(guò)基于Git的開(kāi)源共創(chuàng)平臺(tái),教師可以有效提升教學(xué)效率,將傳統(tǒng)課堂轉(zhuǎn)變?yōu)殚_(kāi)源共創(chuàng)課堂。這種教學(xué)方式不僅能夠激發(fā)學(xué)生的學(xué)習(xí)和探究熱情,還有助于培養(yǎng)學(xué)生的自主管理能力,促進(jìn)他們高效合作,從而更好地適應(yīng)未來(lái)工作的需求。
關(guān)鍵詞:Git;開(kāi)發(fā)工具;編程語(yǔ)言教學(xué)
中圖分類(lèi)號(hào):G434 ?文獻(xiàn)標(biāo)識(shí)碼:A ?論文編號(hào):1674-2117(2024)11-0083-05
在人工智能教育背景下,想要加速培養(yǎng)創(chuàng)新人才,除了要投入一定的智能硬件設(shè)備外,還需要拓展已有的教學(xué)結(jié)構(gòu),如在實(shí)踐課程中,在完成項(xiàng)目式學(xué)習(xí)課題時(shí),如果是完全各自獨(dú)立的一人一創(chuàng)意,則不利于團(tuán)隊(duì)協(xié)作,若是每組一題,又很有可能由個(gè)別優(yōu)秀學(xué)生完成,其他學(xué)生直接引用甚至照搬他們的項(xiàng)目成果,導(dǎo)致教師不能真實(shí)評(píng)價(jià)學(xué)生的掌握狀況,多數(shù)學(xué)生也無(wú)法得到充分鍛煉。教師不妨在信息技術(shù)教學(xué)過(guò)程中嘗試開(kāi)展基于Git系統(tǒng)的版本控制新教學(xué)模式,創(chuàng)設(shè)多種學(xué)習(xí)環(huán)境,激發(fā)學(xué)生的學(xué)習(xí)興趣,發(fā)展多種學(xué)習(xí)技能,促進(jìn)學(xué)生對(duì)知識(shí)的理解和掌握。
Git因何而生?
Git是一個(gè)分布式版本控制系統(tǒng),能夠快速高效地處理從個(gè)人項(xiàng)目到大型項(xiàng)目的版本歷史記錄,類(lèi)似的分布式版本控制系統(tǒng)還有Mercurial、Bazaar、Darcs等。Git最初是由Linus Torvalds(布萊恩·克尼施瓦茨)于2005年為了更好地管理Linux內(nèi)核開(kāi)發(fā)而創(chuàng)建的。Git是一個(gè)開(kāi)源項(xiàng)目,使用C語(yǔ)言編寫(xiě),可以在Windows、Linux、Mac各種平臺(tái)上運(yùn)行。
1.分布式版本控制系統(tǒng):分布式版本控制系統(tǒng)(Distributed Version Control System,簡(jiǎn)稱(chēng)DVCS)是一種不需要中心服務(wù)器的管理文件版本的方法,與集中式版本控制系統(tǒng)不同,分布式版本控制系統(tǒng)沒(méi)有“中央服務(wù)器”,每個(gè)人的電腦上都是一個(gè)完整的版本庫(kù),這樣在工作的時(shí)候,無(wú)需聯(lián)網(wǎng),因?yàn)榘姹編?kù)就在自己的電腦上。在多人協(xié)作時(shí),只需要各自的修改推送給對(duì)方,就能互相看到對(duì)方的修改。Git是一個(gè)分布式版本控制系統(tǒng),這意味著每個(gè)開(kāi)發(fā)者都可以在本地存儲(chǔ)和管理代碼的完整歷史記錄,而無(wú)需將所有更改都存儲(chǔ)在遠(yuǎn)程服務(wù)器上。這種分布式方法減少了頻繁的網(wǎng)絡(luò)傳輸,提高了版本控制的效率。
2.版本歷史記錄:Git維護(hù)一個(gè)完整的版本歷史記錄,可以輕松地查看、管理和跟蹤代碼的更改。通過(guò)Git,開(kāi)發(fā)者可以了解每次提交的詳細(xì)信息,包括提交者、日期和更改內(nèi)容等。
3.分支管理:Git提供了分支管理功能,允許開(kāi)發(fā)者在不同的分支上并行開(kāi)發(fā)。分支可以用于開(kāi)發(fā)新功能、修復(fù)問(wèn)題等,確保不同開(kāi)發(fā)任務(wù)的獨(dú)立性和靈活性。Git還支持分支合并和沖突解決機(jī)制,以確保不同分支之間的代碼可以正確地合并在一起。
4.版本庫(kù):Git將代碼存儲(chǔ)在一個(gè)稱(chēng)為版本庫(kù)(Repository)的地方。版本庫(kù)是一個(gè)中央存儲(chǔ)庫(kù),用于存儲(chǔ)項(xiàng)目的所有歷史記錄和版本信息。每個(gè)開(kāi)發(fā)者都可以在本地創(chuàng)建和管理一個(gè)版本庫(kù)副本,與其他開(kāi)發(fā)者進(jìn)行協(xié)作和共享代碼。
5.提交和修改:Git通過(guò)提交來(lái)記錄代碼的更改。提交是Git中的基本單位,它記錄了代碼的狀態(tài)和更改內(nèi)容。每次提交都會(huì)生成一個(gè)唯一的哈希值,用于標(biāo)識(shí)提交的唯一性。Git還支持修改歷史記錄,允許開(kāi)發(fā)者修改先前的提交記錄。
6.合并和沖突解決:Git支持合并不同分支的代碼。當(dāng)兩個(gè)或多個(gè)開(kāi)發(fā)者同時(shí)對(duì)同一部分代碼進(jìn)行更改時(shí),會(huì)發(fā)生沖突。Git通過(guò)使用三路比較算法來(lái)解決沖突,確保正確地合并代碼。
版本管理系統(tǒng)與項(xiàng)目托管平臺(tái)
很多對(duì)Git完全不了解的讀者可能會(huì)誤以為Git和GitHub是一個(gè)概念,但其實(shí)兩者有著本質(zhì)的區(qū)別:前者是一個(gè)版本管理系統(tǒng),而后者是一個(gè)基于Web的項(xiàng)目托管平臺(tái)。Git和GitHub雖然都是為了進(jìn)行版本控制而存在的,但它們之間存在很大的差別。下面我們來(lái)詳細(xì)了解一下Git和GitHub之間的關(guān)系。
Git是一個(gè)分布式版本控制系統(tǒng),每個(gè)開(kāi)發(fā)者都可以在本地創(chuàng)建和管理版本庫(kù),并且可以將代碼推送到遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行共享。Git通過(guò)分支管理功能支持并行開(kāi)發(fā),并且具有強(qiáng)大的沖突解決機(jī)制,可以輕松地合并不同分支的代碼。GitHub是一個(gè)代碼托管平臺(tái),它允許開(kāi)發(fā)者們將他們的代碼存儲(chǔ)在云端,以便于多人協(xié)作、版本控制、代碼審查等操作。
GitHub成立于2008年,其主要功能是提供在線代碼托管服務(wù),支持版本控制和協(xié)作開(kāi)發(fā)。Git和GitHub都是為了進(jìn)行版本控制和代碼管理而存在的,Git和GitHub可以配合使用。開(kāi)發(fā)者可以使用Git在本地進(jìn)行代碼的版本控制和協(xié)作開(kāi)發(fā),然后將代碼推送到遠(yuǎn)程倉(cāng)庫(kù)(如GitHub),以便于與其他開(kāi)發(fā)者共享代碼并進(jìn)行協(xié)作。
GitHub提供了Git的版本控制功能,但增加了許多其他的協(xié)作和項(xiàng)目管理功能。例如,在GitHub上,開(kāi)發(fā)者可以創(chuàng)建拉取請(qǐng)求(Pull Request)來(lái)進(jìn)行代碼審查和合并,也可以在問(wèn)題跟蹤中記錄和跟蹤遇到的問(wèn)題、缺陷和任務(wù)等。
Git和GitHub的結(jié)合使得代碼托管變得更加流行和高效。通過(guò)將代碼存儲(chǔ)在云端,開(kāi)發(fā)者可以輕松地與其他人共享代碼、協(xié)作開(kāi)發(fā)、審查代碼等。此外,Git和GitHub的集成工具和插件可以進(jìn)一步提高開(kāi)發(fā)效率和代碼質(zhì)量。Git和GitHub之間的關(guān)系是互補(bǔ)的,Git提供了強(qiáng)大的本地版本控制功能,而GitHub則在此基礎(chǔ)上增加了許多協(xié)作和項(xiàng)目管理功能,使得開(kāi)發(fā)者可以更加高效地進(jìn)行軟件開(kāi)發(fā)和項(xiàng)目管理。通過(guò)將Git和GitHub結(jié)合使用,開(kāi)發(fā)者可以更好地利用這兩個(gè)工具的優(yōu)勢(shì),提高開(kāi)發(fā)效率和代碼質(zhì)量。
國(guó)內(nèi)也有許多類(lèi)似于GitHub的項(xiàng)目托管平臺(tái),可以提供更穩(wěn)定的網(wǎng)絡(luò)服務(wù)。碼云(Gitee)是一個(gè)基于Git的代碼托管平臺(tái),由開(kāi)源中國(guó)社區(qū)團(tuán)隊(duì)推出。它提供了一個(gè)安全、可靠、高效的代碼托管環(huán)境,讓用戶可以輕松地與其他人協(xié)作開(kāi)發(fā)項(xiàng)目。碼云支持創(chuàng)建和管理Git倉(cāng)庫(kù),允許用戶在云端存儲(chǔ)代碼,并與其他人共享代碼。用戶可以將自己的項(xiàng)目上傳到碼云,并使用Git命令進(jìn)行版本控制和代碼管理。
除了基本的代碼托管功能之外,碼云還提供了許多協(xié)作開(kāi)發(fā)工具和功能,如討論、Pull Request、評(píng)論等。這些功能使得用戶可以輕松地進(jìn)行代碼審查和討論,并與其他開(kāi)發(fā)者協(xié)作開(kāi)發(fā)項(xiàng)目,從而提高工作效率和質(zhì)量。在碼云上,用戶可以找到許多開(kāi)源項(xiàng)目,這些項(xiàng)目為用戶提供了參與開(kāi)源項(xiàng)目開(kāi)發(fā)的機(jī)會(huì),也為用戶的項(xiàng)目提供了靈感和資源。碼云還擁有一個(gè)活躍的社區(qū)和社交網(wǎng)絡(luò),用戶可以在這里與其他開(kāi)發(fā)者交流經(jīng)驗(yàn)和技術(shù),結(jié)交新朋友。這個(gè)社區(qū)和社交網(wǎng)絡(luò)為開(kāi)發(fā)者提供了一個(gè)互相學(xué)習(xí)、交流和分享的平臺(tái)。碼云支持大規(guī)模協(xié)作和開(kāi)源項(xiàng)目的開(kāi)發(fā),這意味著用戶可以根據(jù)需要擴(kuò)展平臺(tái)的功能和容量,以滿足更多用戶的需求并支持更多項(xiàng)目的開(kāi)發(fā)。碼云的界面簡(jiǎn)潔易用,提供了豐富的文檔和支持資源,方便用戶快速上手使用平臺(tái)的功能。這些文檔和支持資源幫助用戶更好地理解和使用碼云的各項(xiàng)功能,從而更好地實(shí)現(xiàn)代碼托管和協(xié)作開(kāi)發(fā)的目標(biāo)。
Coding.net是騰訊云旗下一站式基于Git的代碼托管和協(xié)作開(kāi)發(fā)的DevOps研發(fā)管理平臺(tái),與Gitee類(lèi)似,它提供了代碼托管、協(xié)作開(kāi)發(fā)、安全性、可擴(kuò)展性、集成和易用性等特點(diǎn)。用戶可以在Coding.net上創(chuàng)建和管理Git倉(cāng)庫(kù),將代碼存儲(chǔ)在云端,并與其他人共享。平臺(tái)提供了討論、Pull Request、評(píng)論等功能,方便用戶進(jìn)行代碼審查和討論,支持大規(guī)模協(xié)作和開(kāi)源項(xiàng)目的開(kāi)發(fā),用戶可以根據(jù)需要擴(kuò)展平臺(tái)的功能和容量。Coding.net可以與其他服務(wù)集成,如CI/CD工具、測(cè)試工具、項(xiàng)目管理工具等,使用戶能夠更方便地將其他工具和服務(wù)與平臺(tái)集成起來(lái)。最后,平臺(tái)界面簡(jiǎn)潔易用,提供了豐富的文檔和支持資源,方便用戶快速上手并充分利用平臺(tái)的功能。
以上這些國(guó)內(nèi)外代碼托管平臺(tái),提供了強(qiáng)大的版本控制、多人協(xié)作、代碼審查等功能,使得開(kāi)發(fā)者可以更加高效地進(jìn)行軟件開(kāi)發(fā)和項(xiàng)目管理。使用項(xiàng)目托管平臺(tái)可以幫助開(kāi)發(fā)者更好地協(xié)作、管理代碼庫(kù)并提高開(kāi)發(fā)效率。此外,項(xiàng)目托管平臺(tái)還支持許多集成工具和插件,可以幫助開(kāi)發(fā)者更加高效地進(jìn)行開(kāi)發(fā)和測(cè)試。總之,無(wú)論是獨(dú)立開(kāi)發(fā)者還是大型團(tuán)隊(duì)的成員,使用項(xiàng)目托管平臺(tái)能夠助力更加高效地進(jìn)行軟件開(kāi)發(fā)和管理。
搭建Git項(xiàng)目倉(cāng)庫(kù)初體驗(yàn)
了解了Git和基于Git的項(xiàng)目托管平臺(tái)的基本概念之后,可以體驗(yàn)一下如何搭建Git項(xiàng)目本地和遠(yuǎn)程倉(cāng)庫(kù),即將尚未進(jìn)行版本控制的本地普通目錄轉(zhuǎn)為Git倉(cāng)庫(kù),并將本地Git倉(cāng)庫(kù)上傳到遠(yuǎn)程倉(cāng)庫(kù)(以GitHub項(xiàng)目托管平臺(tái)為例),具體實(shí)現(xiàn)方法如下。
1.從https://git-scm.com/download下載git安裝包后,在本地創(chuàng)建一個(gè)項(xiàng)目文件夾(以Windows環(huán)境下建立Example文件夾為例),通過(guò)“Open Git Bash here”,輸入git init命令把它變成Git倉(cāng)庫(kù)(如上頁(yè)圖1)。
在安裝完成后,還需要最后一步設(shè)置,在命令行輸入:“git config --global user.name "用戶名"”和“git config --global user.email "用戶電子郵件" ”。這也好理解,因?yàn)镚it是分布式版本控制系統(tǒng),所以,每個(gè)機(jī)器都必須自報(bào)家門(mén)。
2.在進(jìn)行以上操作后,一個(gè)Git版本庫(kù)就初始化完成了。現(xiàn)在Example文件夾內(nèi)就會(huì)出現(xiàn)一個(gè).git文件夾,這個(gè).git文件夾就是Git的版本倉(cāng)庫(kù),里面包含了Git管理項(xiàng)目所需要的所有文件,之后提交的所有修改也都會(huì)被記錄在該文件夾內(nèi)的特定文件內(nèi)??梢园秧?xiàng)目代碼添加進(jìn)來(lái),此處以“Example.py”文件為例(如上頁(yè)圖2)。
3.通過(guò)“git add .”把工作目錄中所有項(xiàng)目文件或者“git add Example.py”(以Example.py為例)特定文件添加到暫存區(qū)(如上頁(yè)圖3)。
4.再通過(guò)git commit -m
"注釋內(nèi)容"把項(xiàng)目提交到本地倉(cāng)庫(kù)(如圖4)。"注釋內(nèi)容"最好是有明確意義的,這樣就能從歷史記錄里方便地找到改動(dòng)記錄。
5.在GitHub上設(shè)置好SSH密鑰后,通過(guò)輸入“ssh -T git@github.com”命令測(cè)試與GitHub建立加密連接(如圖5),從而可以進(jìn)行遠(yuǎn)程操作,新建一個(gè)與本地項(xiàng)目文件夾同名的“Example”遠(yuǎn)程倉(cāng)庫(kù)。
6.獲取遠(yuǎn)程倉(cāng)庫(kù)上“Example”項(xiàng)目的地址(此處以“git@github.com:ohmyparadise/Example.git”SSH地址示意),如圖6所示。
7.通過(guò)git remote add origin git@github.com:ohmyparadise/Example.git將本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行關(guān)聯(lián)(如圖7)。
8.通過(guò)git push origin master把本地倉(cāng)庫(kù)的項(xiàng)目推送到Github的遠(yuǎn)程倉(cāng)庫(kù)上(如下頁(yè)圖8)。打開(kāi)瀏覽器,可以看到成功推送頁(yè)面(如下頁(yè)圖9)。
通過(guò)以上Git操作基本面命令,完成了本地文件代碼推送到Git Hub遠(yuǎn)程項(xiàng)目代碼倉(cāng)庫(kù)初體驗(yàn),限于篇幅不能描述整個(gè)Git命令操作體系。
搭建專(zhuān)有Git代碼托管平臺(tái)
可能有讀者出于實(shí)際教學(xué)需要,希望搭建一個(gè)校內(nèi)代碼托管平臺(tái),可嘗試Gogs這個(gè)輕量級(jí)的、易于搭建和使用的自助Git服務(wù)。它本身就是一個(gè)GitHub上的開(kāi)源項(xiàng)目(https://github.com/gogs/gogs)。對(duì)于初學(xué)者可以嘗試使用Docker容器安裝Gogs,這樣安裝更為簡(jiǎn)單,只要通過(guò)幾條指令就可以馬上看到平臺(tái)效果。首先可以通過(guò)“docker pull gogs/gogs”拉取一個(gè)Gogs鏡像(如圖10)。
然后創(chuàng)建一個(gè)/var/gogs本地目錄作為gogs存儲(chǔ)目錄,再通過(guò)運(yùn)行“docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs”開(kāi)啟服務(wù)的路徑和端口映射。這樣就可通過(guò)該容器“IP:10080”訪問(wèn)配置頁(yè)面(如圖11)。在完成初始配置后,即可注冊(cè)賬號(hào)并創(chuàng)建個(gè)人倉(cāng)庫(kù)了。
結(jié)語(yǔ)
作為一個(gè)開(kāi)源的分布式版本控制系統(tǒng),Git可以有效、高速地進(jìn)行項(xiàng)目的版本管理。在代碼托管平臺(tái)上讓學(xué)習(xí)者和開(kāi)發(fā)人員貢獻(xiàn)自己的代碼,也能輕松使用其他人的代碼,從而讓學(xué)習(xí)和開(kāi)發(fā)變得更加高效。對(duì)于個(gè)人而言,了解并掌握基于Git的版本控制系統(tǒng),運(yùn)用Git提供的Web IDE,使得開(kāi)發(fā)變得更加簡(jiǎn)單;對(duì)于團(tuán)隊(duì)而言,將代碼存儲(chǔ)在服務(wù)器上,開(kāi)發(fā)人員可以更輕松地協(xié)作和反饋。