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