App下載

如何開始使用 Git 進(jìn)行版本控制

Vasyl Lagutin 2021-09-02 12:05:05 瀏覽數(shù) (4320)
反饋

在本教程中,您將了解什么是版本控制以及如何使用Git為開源項(xiàng)目做出貢獻(xiàn)。我們將了解Git的基礎(chǔ)知識,這是任何 Web 開發(fā)人員都不可或缺的知識。

什么是Git?

Git是一個版本控制軟件,可讓您與其他程序員協(xié)作。Git解決的最大問題是它幫助開發(fā)人員跟蹤他們正在處理的代碼庫的不同版本。

在版本控制系統(tǒng)發(fā)明之前,不同的開發(fā)人員很難同步他們的工作。

為什么要使用Git?

如果您不使用Git,則創(chuàng)建項(xiàng)目將如下所示:

沒有 Git 的項(xiàng)目

使用Git,它看起來更加優(yōu)雅,如下所示:

使用 Git 進(jìn)行項(xiàng)目

如何安裝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)建單一的真實(shí)來源。

在 Git 中,存儲代碼的地方稱為repository。

如何初始化一個空的 Git 存儲庫

在項(xiàng)目中使用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)建代碼庫的快照。您可以稍后返回此快照或與您的隊(duì)友共享,以便他們可以從您的進(jìn)度中積累。

請記住,只有為提交暫存的文件才會包含在其中。如果你不暫存任何東西,你將無法提交。

在暫存我們的更改之后,是時候提交更改了。要提交更改,請使用:

git commit -m "<message describing the change>"

一旦我們執(zhí)行了git commit,我們就完成了對代碼庫的更改。

 給代碼寫注釋是一種良好的美德,給Git寫提交信息也是。在很多集成git的ide中,沒有填寫提交信息是不能進(jìn)行提交的,提交信息也可以幫助你快速定位到你修改的地方,以及做了哪些改動。相信我,寫了提交信息會讓你對你所做的工作有個更清晰的了解。

如何在 Git 中查看日志

您可能希望查看項(xiàng)目更改的日志。您可以使用以下命令執(zhí)行此操作:

git log

日志如下所示:

Git日志

如您所見,有 2 個提交。第一個顯示我們已經(jīng)創(chuàng)建了一個新文件,第二個描述了對它的修改。

請記住,Git 不會自動跟蹤您所做的更改。您應(yīng)該手動暫存和提交它們。

如何在 Git 中重置和恢復(fù)提交

如果您在提交中犯了錯誤,您可能想要撤銷更改。

有兩種方法可以撤消更改:

  1. Reset
  2. 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)。

Git日志

您還可以使用hash值來撤銷特定的提交:

git revert 8a11c5095f2dcd70b0bc8c66061a1368558a3abf

這與重置不同,因?yàn)樗试S您撤銷在特定提交中所做的更改。

在我們分解命令的時候,我們發(fā)現(xiàn)git revert <commit hash>在您還原更改時,Git 會添加一個額外的提交。

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>
Git合并

如果一切順利,此操作將在目標(biāo)分支中創(chuàng)建一個合并提交,并在那里添加所有提交。

如何解決 Git 中的沖突

在合并分支時,可能會發(fā)生在每個分支中更新同一文件的相同部分的情況。

在這種情況下,會發(fā)生沖突,因?yàn)镚it不知道要保留哪些更改以及要放棄哪些更改。所以 Git 創(chuàng)建了一個沖突消息,并提示你手動選擇哪個分支是正確的。

Git 合并失敗

沖突消息概述了沖突發(fā)生的位置以及當(dāng)前和傳入的更改。

Git 沖突

決定如何解決沖突后,需要添加一個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àng)目做出貢獻(xiàn)。

不久前,我發(fā)現(xiàn)在我的編程博客中使用的開源 Hugo 主題Papermod中存在一個小問題。

修復(fù)非常簡單,我想為該項(xiàng)目做出貢獻(xiàn)以改進(jìn)它。

貢獻(xiàn)步驟:

  1. 找到您想要貢獻(xiàn)的存儲庫?;蛘?,如果您在公司環(huán)境中工作,您的公司可能會提供一個存儲庫供您使用。
  2. fork存儲庫?,F(xiàn)在你有一個存儲庫的副本。
GitHub 分叉

3. 復(fù)制此處找到的克隆鏈接:

GitHub 克隆鏈接

4. 執(zhí)行以下命令:

   git clone <clone link>

將在您的計(jì)算機(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)在您擁有了使用版本控制的工具,可以在您自己的項(xiàng)目中使用它,也可以為數(shù)以千計(jì)的在線開源項(xiàng)目做出貢獻(xiàn)。

更詳細(xì)的Git使用介紹可以前往git教程進(jìn)行學(xué)習(xí)。


0 人點(diǎn)贊