在本教程中,您將了解什么是版本控制以及如何使用Git為開源項(xiàng)目做出貢獻(xiàn)。我們將了解Git的基礎(chǔ)知識(shí),這是任何 Web 開發(fā)人員都不可或缺的知識(shí)。
什么是Git?
Git是一個(gè)版本控制軟件,可讓您與其他程序員協(xié)作。Git解決的最大問(wèn)題是它幫助開發(fā)人員跟蹤他們正在處理的代碼庫(kù)的不同版本。
在版本控制系統(tǒng)發(fā)明之前,不同的開發(fā)人員很難同步他們的工作。
為什么要使用Git?
如果您不使用Git,則創(chuàng)建項(xiàng)目將如下所示:
使用Git,它看起來(lái)更加優(yōu)雅,如下所示:
如何安裝Git
您可以從官方網(wǎng)站下載并安裝Git。
如果您在Windows上使用它,請(qǐng)確保將Git添加到環(huán)境變量?Path
?中。
在 Linux 中,您可以使用以下命令直接從終端安裝它:
sudo apt-get install git
安裝完成后,您可以通過(guò)執(zhí)行以下命令來(lái)檢查Git是否安裝正確:
git --version
如果您獲得當(dāng)前安裝的版本,則安裝成功,您就可以開始了。
Git基礎(chǔ)知識(shí)
現(xiàn)在讓我們通過(guò)一些小例子來(lái)學(xué)習(xí)Git的基礎(chǔ)知識(shí)。
首先,讓我們討論如何為代碼創(chuàng)建單一的真實(shí)來(lái)源。
在 Git 中,存儲(chǔ)代碼的地方稱為repository。
如何初始化一個(gè)空的 Git 存儲(chǔ)庫(kù)
在項(xiàng)目中使用Git 的第一步是初始化Git存儲(chǔ)庫(kù)。您可以使用以下命令初始化Git存儲(chǔ)庫(kù):
git init
此命令在當(dāng)前目錄中創(chuàng)建一個(gè)子目錄?.git
?。它將保存所有內(nèi)部 Git 元數(shù)據(jù),例如提交歷史記錄。
如何在 Git 中暫存更改
我們需要?jiǎng)?chuàng)建一些文件來(lái)暫存更改并進(jìn)行提交(我將在下面討論)。讓我們創(chuàng)建test.txt并在其中插入一些文本。
暫存意味著告訴 Git 您準(zhǔn)備將哪些文件提交(添加)到存儲(chǔ)庫(kù)。當(dāng)您正在進(jìn)行工作并想要提交單個(gè)文件時(shí),它非常有用。
現(xiàn)在,我們已準(zhǔn)備好進(jìn)行更改。您可以單獨(dú)列出要暫存的文件,如下所示:
git add test.txt
一旦我們執(zhí)行了這個(gè)命令,Git 就知道test.txt已經(jīng)準(zhǔn)備好提交了。
或者,您可以使用以下命令暫存所有文件:
git add .
當(dāng)您有一堆文件并且不想鍵入每個(gè)文件名時(shí),它很有用。
如何在 Git 中提交更改
提交更改會(huì)在給定的時(shí)間點(diǎn)創(chuàng)建代碼庫(kù)的快照。您可以稍后返回此快照或與您的隊(duì)友共享,以便他們可以從您的進(jìn)度中積累。
請(qǐng)記住,只有為提交暫存的文件才會(huì)包含在其中。如果你不暫存任何東西,你將無(wú)法提交。
在暫存我們的更改之后,是時(shí)候提交更改了。要提交更改,請(qǐng)使用:
git commit -m "<message describing the change>"
一旦我們執(zhí)行了git commit,我們就完成了對(duì)代碼庫(kù)的更改。
給代碼寫注釋是一種良好的美德,給Git寫提交信息也是。在很多集成git的ide中,沒(méi)有填寫提交信息是不能進(jìn)行提交的,提交信息也可以幫助你快速定位到你修改的地方,以及做了哪些改動(dòng)。相信我,寫了提交信息會(huì)讓你對(duì)你所做的工作有個(gè)更清晰的了解。
如何在 Git 中查看日志
您可能希望查看項(xiàng)目更改的日志。您可以使用以下命令執(zhí)行此操作:
git log
日志如下所示:
如您所見,有 2 個(gè)提交。第一個(gè)顯示我們已經(jīng)創(chuàng)建了一個(gè)新文件,第二個(gè)描述了對(duì)它的修改。
請(qǐng)記住,Git 不會(huì)自動(dòng)跟蹤您所做的更改。您應(yīng)該手動(dòng)暫存和提交它們。
如何在 Git 中重置和恢復(fù)提交
如果您在提交中犯了錯(cuò)誤,您可能想要撤銷更改。
有兩種方法可以撤消更改:
- Reset
- Revert
Git重置(Reset)
重置命令的一般語(yǔ)法如下所示: git reset <reset types> HEAD~<number of commits to undo>
最常用的重置類型是:
- --soft :取消提交并保持更改
- --hard :取消提交和刪除更改
如果我們想從 Git 中取消提交更改,但保留對(duì)代碼的本地修改,我們使用以下命令:
git reset --soft HEAD~1
當(dāng)您不小心暫存了一些不屬于提交的文件時(shí),它很有用。
重置后,您可以暫存必要的更改并提交它們。
Git 還原
您可能還注意到,每個(gè)提交都與一個(gè)hash值相關(guān)聯(lián)。
您還可以使用hash值來(lái)撤銷特定的提交:
git revert 8a11c5095f2dcd70b0bc8c66061a1368558a3abf
這與重置不同,因?yàn)樗试S您撤銷在特定提交中所做的更改。
在我們分解命令的時(shí)候,我們發(fā)現(xiàn)git revert <commit hash>在您還原更改時(shí),Git 會(huì)添加一個(gè)額外的提交。
如何使用 Git 分支
Git 允許您創(chuàng)建不同的分支。這些分支使您可以將代碼版本的范圍分開(例如,錯(cuò)誤修復(fù)、開發(fā)、生產(chǎn)等——所有不同的分支)。
要?jiǎng)?chuàng)建新分支,請(qǐng)使用以下命令:
git checkout -b <new branch name>
要切換到現(xiàn)有分支,請(qǐng)刪除-b標(biāo)志并使用現(xiàn)有分支名稱而不是新分支名稱:
git checkout <branch name>
如何合并 Git 分支
在分支中進(jìn)行切換后,您可能希望使用另一個(gè)分支的代碼更新主分支。為此,首先移動(dòng)到要更新的分支并使用以下命令:
git merge <update source branch name>
如果一切順利,此操作將在目標(biāo)分支中創(chuàng)建一個(gè)合并提交,并在那里添加所有提交。
如何解決 Git 中的沖突
在合并分支時(shí),可能會(huì)發(fā)生在每個(gè)分支中更新同一文件的相同部分的情況。
在這種情況下,會(huì)發(fā)生沖突,因?yàn)镚it不知道要保留哪些更改以及要放棄哪些更改。所以 Git 創(chuàng)建了一個(gè)沖突消息,并提示你手動(dòng)選擇哪個(gè)分支是正確的。
沖突消息概述了沖突發(fā)生的位置以及當(dāng)前和傳入的更改。
決定如何解決沖突后,需要添加一個(gè)commit來(lái)解決沖突。
如何使用遠(yuǎn)程 Git 存儲(chǔ)庫(kù)
要與他人協(xié)作,您需要處理遠(yuǎn)程存儲(chǔ)庫(kù)。我們將專注于如何與GitHub合作使用Git,但您可以使用任何其他類似的站點(diǎn),如GitLab或gitee。
要與他人協(xié)作,您需要在網(wǎng)站上創(chuàng)建一個(gè)帳戶。現(xiàn)在您已準(zhǔn)備好為GitHub 上的開源項(xiàng)目做出貢獻(xiàn)。
不久前,我發(fā)現(xiàn)在我的編程博客中使用的開源 Hugo 主題Papermod中存在一個(gè)小問(wèn)題。
修復(fù)非常簡(jiǎn)單,我想為該項(xiàng)目做出貢獻(xiàn)以改進(jìn)它。
貢獻(xiàn)步驟:
- 找到您想要貢獻(xiàn)的存儲(chǔ)庫(kù)?;蛘撸绻诠经h(huán)境中工作,您的公司可能會(huì)提供一個(gè)存儲(chǔ)庫(kù)供您使用。
- fork存儲(chǔ)庫(kù)?,F(xiàn)在你有一個(gè)存儲(chǔ)庫(kù)的副本。
3. 復(fù)制此處找到的克隆鏈接:
4. 執(zhí)行以下命令:
git clone <clone link>
將在您的計(jì)算機(jī)上創(chuàng)建存儲(chǔ)庫(kù)的副本。添加上游遠(yuǎn)程,只是源存儲(chǔ)庫(kù)的一個(gè)別稱,使用:
git remote add <upstream remote name> <source repository clone link>
現(xiàn)在您可以使用您學(xué)到的Git基礎(chǔ)知識(shí)來(lái)修改代碼。
提交更改后,您可以使用以下命令更新源存儲(chǔ)庫(kù):
git push origin <branch name to push changes>
現(xiàn)在您可以在源存儲(chǔ)庫(kù)中創(chuàng)建一個(gè)Pull Request,維護(hù)人員將審查并合并您的代碼。
結(jié)論
在本文中,我們學(xué)習(xí)了Git的基礎(chǔ)知識(shí)。現(xiàn)在您擁有了使用版本控制的工具,可以在您自己的項(xiàng)目中使用它,也可以為數(shù)以千計(jì)的在線開源項(xiàng)目做出貢獻(xiàn)。
更詳細(xì)的Git使用介紹可以前往git教程進(jìn)行學(xué)習(xí)。