国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
Git 分支:高效協(xié)作的利器
首頁(yè) 科技周邊 IT業(yè)界 快點(diǎn)開始git:在git中分支

快點(diǎn)開始git:在git中分支

Feb 18, 2025 am 10:12 AM

Git 分支:高效協(xié)作的利器

本文節(jié)選自《Jump Start Git》一書,該書免費(fèi)提供給 SitePoint Premium 會(huì)員。實(shí)體書在全球各大書店有售,您也可以在此處訂購(gòu)。希望您喜歡并能從中受益!

第一章中,我曾談到自己最初對(duì)在項(xiàng)目中嘗試新事物的恐懼。如果嘗試一些雄心勃勃的功能,卻破壞了之前正常運(yùn)行的部分,該怎么辦?Git 的分支功能完美解決了這個(gè)問(wèn)題。

要點(diǎn)總結(jié)

  • Git 分支允許創(chuàng)建項(xiàng)目的副本,從而進(jìn)行實(shí)驗(yàn)而不會(huì)影響原始項(xiàng)目。如果實(shí)驗(yàn)成功,可以輕松地將實(shí)驗(yàn)性元素合并到主分支。
  • 分支允許同時(shí)處理多個(gè)任務(wù)而不會(huì)相互干擾。這在等待一個(gè)功能審批的同時(shí)需要處理另一個(gè)功能時(shí)非常有用。分支還可以通過(guò)分離不同的想法來(lái)使代碼更易于理解。
  • 在 Git 中創(chuàng)建分支使用命令 git branch [分支名稱]。切換到該分支使用 git checkout [分支名稱]。刪除分支使用 git branch -D [分支名稱],但建議除非必要,否則不要?jiǎng)h除分支。
  • 在 Git 中合并分支是一個(gè)簡(jiǎn)單的過(guò)程。確保所需分支處于活動(dòng)狀態(tài)后,使用命令 git merge [分支名稱]。但是,這可能會(huì)在項(xiàng)目歷史記錄中創(chuàng)建循環(huán),這在大型團(tuán)隊(duì)中可能難以導(dǎo)航。下一章將探討一種不創(chuàng)建循環(huán)的合并方法。

什么是分支?

在項(xiàng)目中創(chuàng)建一個(gè)新分支,本質(zhì)上意味著創(chuàng)建該項(xiàng)目的副本。您可以使用此副本進(jìn)行實(shí)驗(yàn),而不會(huì)影響原始項(xiàng)目。因此,如果實(shí)驗(yàn)失敗,您可以放棄它并返回到原始項(xiàng)目——主分支。

但如果實(shí)驗(yàn)成功,Git 可以輕松地將實(shí)驗(yàn)性元素合并到主分支中。而且,在后期,如果您改變主意,可以輕松地恢復(fù)到合并之前的項(xiàng)目狀態(tài)。

因此,Git 中的分支是獨(dú)立的開發(fā)路徑。您可以在分支中創(chuàng)建新的提交,而不會(huì)影響其他分支。分支的易用性是 Git 最好的特性之一。(雖然其他版本控制選項(xiàng)(如 CVS)也有分支選項(xiàng),但在 CVS 上合并分支的體驗(yàn)非常繁瑣。如果您有使用其他版本控制系統(tǒng)中分支的經(jīng)驗(yàn),請(qǐng)放心,在 Git 中使用分支是完全不同的。)

在 Git 中,您默認(rèn)處于主分支。名稱“master”(主)并不意味著它在任何方面都優(yōu)越。這只是一個(gè)約定俗成的叫法。

注意:分支約定

雖然您可以自由地使用不同的分支作為 Git 中的基礎(chǔ)分支,但人們通常期望在主分支中找到特定項(xiàng)目的最新代碼。

您可能會(huì)爭(zhēng)辯說(shuō),由于能夠返回到任何提交,因此不需要分支。但是,想象一下,您需要向您的主管展示您的工作,同時(shí)還要開發(fā)一個(gè)不屬于您已完成工作的新功能的情況。由于分支用于分離不同的想法,因此它使存儲(chǔ)庫(kù)中的代碼易于理解。此外,分支使您能夠僅在主分支或主分支中保留重要的提交。

分支的另一個(gè)用途是它們使您能夠同時(shí)處理多件事情,而不會(huì)相互干擾。假設(shè)您提交了功能 1 以供審核,但您的主管需要一些時(shí)間才能審核它。同時(shí),您需要處理功能 2。在這種情況下,分支就派上用場(chǎng)了。如果您在新分支上處理您的新想法,您可以隨時(shí)切換回您之前的分支,以將存儲(chǔ)庫(kù)恢復(fù)到之前的狀態(tài),該狀態(tài)不包含與您的想法相關(guān)的任何代碼。

現(xiàn)在讓我們開始在 Git 中使用分支。要查看分支列表和您正在使用的當(dāng)前分支,請(qǐng)運(yùn)行以下命令:

<code>git branch</code>

如果您已克隆您的存儲(chǔ)庫(kù)或設(shè)置了遠(yuǎn)程存儲(chǔ)庫(kù),您也可以看到遠(yuǎn)程分支。只需在上述命令后添加 -a:

<code>git branch -a</code>

Jump Start Git: Branching in Git

如上所示,紅色分支表示它們位于遠(yuǎn)程存儲(chǔ)庫(kù)。在我們的例子中,我們可以看到 origin 遠(yuǎn)程存儲(chǔ)庫(kù)中存在的各種分支。

創(chuàng)建分支

在 Git 中創(chuàng)建分支有多種方法。要?jiǎng)?chuàng)建一個(gè)新分支并保留在當(dāng)前分支中,請(qǐng)運(yùn)行以下命令:

<code>git branch test_branch</code>

這里,test_branch 是創(chuàng)建的分支的名稱。但是,運(yùn)行 <code>git branch</code> 后,似乎活動(dòng)分支仍然是主分支。要更改活動(dòng)分支,我們可以運(yùn)行 checkout 命令(如下所示):

<code>git checkout test_branch</code>

Jump Start Git: Branching in Git

您還可以組合上述兩個(gè)命令,從而通過(guò)在 checkout 命令后添加 -b 來(lái)在一個(gè)命令中創(chuàng)建和檢出新分支:

<code>git checkout -b new_test_branch</code>

Jump Start Git: Branching in Git

我們剛剛創(chuàng)建的分支基于當(dāng)前活動(dòng)分支(在本例中為主分支)的最新提交。如果您想基于某個(gè)提交(例如 cafb55d)創(chuàng)建分支(例如 old_commit_branch),您可以運(yùn)行以下命令:

<code>git checkout -b old_commit_branch cafb55d</code>

Jump Start Git: Branching in Git

要將當(dāng)前分支重命名為 renamed_branch,請(qǐng)運(yùn)行以下命令:

<code>git branch -m renamed_branch</code>

刪除分支

要?jiǎng)h除分支,請(qǐng)運(yùn)行以下命令:

<code>git branch</code>

Jump Start Git: Branching in Git

注意:除非必須,否則不要?jiǎng)h除分支

由于保留分支實(shí)際上沒(méi)有任何缺點(diǎn),因此我建議除非存儲(chǔ)庫(kù)中的分支數(shù)量變得太大而難以管理,否則不要?jiǎng)h除它們。

上面使用的 -D 選項(xiàng)即使分支尚未與遠(yuǎn)程分支同步,也會(huì)刪除分支。這意味著,如果您的當(dāng)前分支中有尚未推送的提交,-D 仍然會(huì)刪除您的分支,而不會(huì)發(fā)出任何警告。為了確保您不會(huì)丟失數(shù)據(jù),您可以使用 -d 作為 -D 的替代項(xiàng)。-d 僅在分支已與遠(yuǎn)程分支同步時(shí)才刪除分支。由于我們的分支尚未同步,讓我們看看如果我們使用 -d 會(huì)發(fā)生什么,如下所示:

Jump Start Git: Branching in Git

如您所見(jiàn),Git 會(huì)向您發(fā)出警告并中止操作,因?yàn)閿?shù)據(jù)尚未與分支合并。

分支和 HEAD

既然我們有機(jī)會(huì)嘗試分支的基礎(chǔ)知識(shí),那么讓我們花一點(diǎn)時(shí)間討論分支在 Git 中的工作方式,并介紹一個(gè)重要的概念:HEAD。

如上所述,分支只是不同提交之間的鏈接,或者說(shuō)是通過(guò)提交的路徑。需要注意的是,在使用分支時(shí),分支的 HEAD 指向分支中的最新提交。我將在接下來(lái)的章節(jié)中多次提到 HEAD。在 Git 中,HEAD 指向分支中的最新提交。換句話說(shuō),它指的是分支的頂端。

分支本質(zhì)上是指向提交的指針,該提交具有父提交、祖父母提交等等。這個(gè)提交鏈形成了我上面提到的路徑。那么,如何鏈接分支和 HEAD 呢?好吧,HEAD 和當(dāng)前分支的頂端指向相同的提交。讓我們來(lái)看一個(gè)圖表來(lái)說(shuō)明這個(gè)想法:

Jump Start Git: Branching in Git

如上所示,branch_A 最初是活動(dòng)分支,HEAD 指向提交 C。提交 A 是基礎(chǔ)提交,沒(méi)有任何父提交,因此 branch_A 中的提交按時(shí)間反向順序排列(這也構(gòu)成了我上面談到的路徑)是 C → B → A。branch_B 中的提交是 E → D → B → A。HEAD 指向活動(dòng)分支 branch_A 的最新提交,即提交 C。當(dāng)我們添加提交時(shí),它將添加到活動(dòng)分支。提交后,branch_A 指向 F,分支遵循 F → C → B → A,而 branch_B 保持不變。HEAD 現(xiàn)在指向提交 F。同樣,當(dāng)我們添加另一個(gè)提交時(shí),更改在圖中得到演示。

高級(jí)分支:合并分支

如前所述,Git 最大的優(yōu)勢(shì)之一是合并分支特別容易?,F(xiàn)在讓我們看看它是如何完成的。

我們將創(chuàng)建兩個(gè)新分支——new_featureanother_feature——并添加一些虛擬提交。檢查每個(gè)分支的歷史記錄向我們顯示,another_feature 分支領(lǐng)先一個(gè)提交,如下所示:

Jump Start Git: Branching in Git

這種情況可以如下圖所示。每個(gè)圓圈代表一個(gè)提交,分支名稱指向其 HEAD(分支的頂端)。

Jump Start Git: Branching in Git

要將 new_feature 與主分支合并,請(qǐng)運(yùn)行以下命令(首先確保主分支處于活動(dòng)狀態(tài)):

<code>git branch</code>

結(jié)果可以如下圖所示:

Jump Start Git: Branching in Git

要將 another_featurenew_feature 合并,只需運(yùn)行以下命令(確保 new_feature 分支處于活動(dòng)狀態(tài)):

<code>git branch -a</code>

結(jié)果可以如下圖所示:

Jump Start Git: Branching in Git

重要提示:注意循環(huán)

上圖顯示此合并在您的項(xiàng)目歷史記錄中跨兩個(gè)提交創(chuàng)建了一個(gè)循環(huán),其中工作流分別發(fā)散和收斂。在單獨(dú)工作或在小型團(tuán)隊(duì)中工作時(shí),此類循環(huán)可能不是問(wèn)題。但是,在一個(gè)更大的團(tuán)隊(duì)中——自從您偏離主分支以來(lái)可能有很多提交——這種大型循環(huán)使得難以導(dǎo)航歷史記錄并理解更改。我們將在第 6 章中探討使用 rebase 命令合并分支而不創(chuàng)建循環(huán)的方法。

Jump Start Git: Branching in Git

此合并沒(méi)有任何“沖突”。原因很簡(jiǎn)單,與 another_feature 分支相比,沒(méi)有新的提交添加到 new_feature 分支。Git 中的沖突發(fā)生在同一文件的同一部分在兩個(gè)分支中的非公共提交中都被修改時(shí)。Git 會(huì)引發(fā)沖突以確保您不會(huì)丟失任何數(shù)據(jù)。

我們將在下一章詳細(xì)討論沖突。我前面提到過(guò),分支可以通過(guò)簡(jiǎn)單的提交路徑來(lái)可視化。當(dāng)我們合并分支并且沒(méi)有沖突時(shí),例如上面那樣,只有分支路徑發(fā)生更改,并且分支的 HEAD 會(huì)更新。這稱為快速前進(jìn)類型的合并。

合并分支的另一種方法是非快速前進(jìn)合并,方法是在合并命令后添加 --no-ff。通過(guò)這種方式,將在基礎(chǔ)分支上創(chuàng)建一個(gè)新的提交,其中包含來(lái)自另一個(gè)分支的更改。您還需要指定提交消息:

<code>git branch</code>

在上面的示例中,前者(將 new_feature 與主分支合并)是快速前進(jìn)合并,而后者是非快速前進(jìn)合并,帶有合并提交。

雖然快速前進(jìn)樣式的合并是默認(rèn)的,但通常最好對(duì)合并到主分支的合并使用非快速前進(jìn)方法。從長(zhǎng)遠(yuǎn)來(lái)看,標(biāo)識(shí)新功能合并的新提交可能是有益的,因?yàn)樗鼘⒇?fù)責(zé)新功能的代碼部分邏輯地分離到一個(gè)提交中。

結(jié)論

您學(xué)到了什么?

在本章中,我們討論了什么是分支以及如何在 Git 中管理它們。我們研究了創(chuàng)建、修改、刪除和合并分支。

接下來(lái)是什么?

我已經(jīng)談到 Git 如何對(duì)團(tuán)隊(duì)合作的開發(fā)人員有益。下一章將更詳細(xì)地探討這一點(diǎn),以及在分布式團(tuán)隊(duì)中經(jīng)常使用的特定 Git 操作和命令。

關(guān)于 Git 分支的常見(jiàn)問(wèn)題

  • Git 分支的主要目的是什么?

Git 分支是一個(gè)強(qiáng)大的功能,允許開發(fā)人員創(chuàng)建單獨(dú)的開發(fā)線路。這在處理新功能或修復(fù)程序時(shí)尤其有用,因?yàn)樗试S您將工作與主項(xiàng)目隔離開來(lái)。功能或修復(fù)程序完成后并經(jīng)過(guò)測(cè)試后,可以將其合并回主項(xiàng)目。這確保了主項(xiàng)目保持穩(wěn)定,并允許多個(gè)開發(fā)人員同時(shí)處理不同的功能而不會(huì)相互干擾。

  • 如何在 Git 中創(chuàng)建新分支?

在 Git 中創(chuàng)建新分支很簡(jiǎn)單。您可以使用 <code>git branch</code> 命令,后跟新分支的名稱。例如,git branch new_feature 將創(chuàng)建一個(gè)名為“new_feature”的新分支。要切換到此分支,您可以使用 git checkout 命令,如下所示:git checkout new_feature。

  • 如何在 Git 中合并分支?

在 Git 中合并分支使用 git merge 命令。在合并之前,您需要位于要合并到的分支上。例如,如果您想將名為“new_feature”的分支合并到“master”分支,您首先需要使用 git checkout master 切換到主分支,然后使用 git merge new_feature 命令。

  • 什么是 Git 分支指針以及它是如何工作的?

Git 分支指針是一個(gè)包含其指向的提交的 SHA1 哈希的文件。當(dāng)您創(chuàng)建新分支時(shí),Git 會(huì)創(chuàng)建一個(gè)新的指針,并隨著您進(jìn)行的每次新提交一起移動(dòng)它。這允許 Git 跟蹤項(xiàng)目的歷史記錄。

  • 如何在 Git 中刪除分支?

在 Git 中刪除分支使用 git branch -d 命令,后跟分支的名稱。例如,git branch -d old_feature 將刪除名為“old_feature”的分支。但是,如果分支有尚未合并到另一個(gè)分支中的提交,Git 將阻止您刪除分支。要強(qiáng)制刪除,您可以使用 -D 選項(xiàng)。

  • Git 中的快速前進(jìn)合并和三方合并有什么區(qū)別?

當(dāng)從當(dāng)前分支尖端到目標(biāo)分支存在線性路徑時(shí),Git 中的快速前進(jìn)合并是可能的。Git 不創(chuàng)建新的提交,而是將當(dāng)前分支指針向上移動(dòng)到目標(biāo)分支。另一方面,當(dāng)不存在線性路徑時(shí),使用三方合并。Git 將創(chuàng)建一個(gè)具有兩個(gè)父級(jí)的新的提交,有效地連接兩個(gè)分支。

  • 如何查看 Git 存儲(chǔ)庫(kù)中的所有分支?

您可以使用不帶參數(shù)的 <code>git branch</code> 命令查看 Git 存儲(chǔ)庫(kù)中的所有分支。這將列出所有本地分支。如果您還想查看遠(yuǎn)程分支,可以使用 -a 選項(xiàng),如下所示:<code>git branch -a</code>。

  • 如何在 Git 中重命名分支?

在 Git 中重命名分支使用 git branch -m 命令,后跟舊名稱和新名稱。例如,git branch -m old_name new_name 將將分支“old_name”重命名為“new_name”。

  • 什么是 Git 中的分離 HEAD 以及如何避免它?

Git 中的分離 HEAD 發(fā)生在您檢出提交而不是分支時(shí)。這可能很危險(xiǎn),因?yàn)楫?dāng)您檢出到另一個(gè)分支時(shí),您所做的任何更改都將丟失。為避免這種情況,請(qǐng)務(wù)必始終檢出到分支,而不是提交。

  • 如何在 Git 中合并分支時(shí)解決沖突?

在 Git 中合并分支時(shí),如果同一文件的同一部分在兩個(gè)分支中都被修改,則可能會(huì)發(fā)生沖突。Git 將標(biāo)記該文件為“未合并”,您需要手動(dòng)解決沖突。您可以通過(guò)在文本編輯器中打開文件,找到?jīng)_突標(biāo)記(<<<<<<<),并決定保留哪些更改來(lái)執(zhí)行此操作。解決所有沖突后,您可以使用 git add 添加文件,然后使用 git commit 提交它。

以上是快點(diǎn)開始git:在git中分支的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

開發(fā)人員的快捷方式到您的Udemy樣平臺(tái) 開發(fā)人員的快捷方式到您的Udemy樣平臺(tái) Jun 17, 2025 pm 04:43 PM

在開發(fā)類似于Udemy的學(xué)習(xí)平臺(tái)時(shí),重點(diǎn)不僅僅是內(nèi)容質(zhì)量。同樣重要的是如何交付內(nèi)容。這是因?yàn)楝F(xiàn)代教育平臺(tái)依賴于媒體,快速且易于消化。

用于購(gòu)買SSL證書的經(jīng)濟(jì)有效的轉(zhuǎn)售商平臺(tái) 用于購(gòu)買SSL證書的經(jīng)濟(jì)有效的轉(zhuǎn)售商平臺(tái) Jun 25, 2025 am 08:28 AM

在一個(gè)在線信任不可談判的世界中,SSL證書對(duì)于每個(gè)網(wǎng)站都至關(guān)重要。 SSL認(rèn)證的市場(chǎng)規(guī)模在2024年價(jià)值56億美元,并且由于電子商務(wù)業(yè)務(wù)的激增而推動(dòng)了強(qiáng)勁的增長(zhǎng)

SaaS的5個(gè)最佳支付門戶:您的最終指南 SaaS的5個(gè)最佳支付門戶:您的最終指南 Jun 29, 2025 am 08:28 AM

付款網(wǎng)關(guān)是付款過(guò)程的關(guān)鍵組成部分,使企業(yè)能夠在線接受付款。它充當(dāng)客戶與商人之間的橋梁,安全地傳輸付款信息并促進(jìn)交易。 為了

由于新的Microsoft AI型號(hào) 由于新的Microsoft AI型號(hào) Jul 05, 2025 am 12:44 AM

一種新的人工智能(AI)模型已經(jīng)證明了比幾個(gè)使用最廣泛使用的全球預(yù)測(cè)系統(tǒng)更快,更精確地預(yù)測(cè)重大天氣事件的能力。該名為Aurora的模型已接受過(guò)培訓(xùn)。

新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 Jul 03, 2025 pm 05:48 PM

在我們認(rèn)為人類始終超越機(jī)器的領(lǐng)域的另一個(gè)挫折中,研究人員現(xiàn)在建議AI比我們更好地理解情感。研究人員發(fā)現(xiàn)人工智能證明了一個(gè)

您的設(shè)備喂養(yǎng)AI助手并收集個(gè)人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 您的設(shè)備喂養(yǎng)AI助手并收集個(gè)人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 Jul 05, 2025 am 01:12 AM

不管喜歡與否,人工智能已成為日常生活的一部分。許多設(shè)備(包括電動(dòng)剃須刀和牙刷)已成為AI驅(qū)動(dòng)的“使用機(jī)器學(xué)習(xí)算法來(lái)跟蹤一個(gè)人的使用方式,Devi的方式

高級(jí)AI型號(hào)的CO&#8322;回答相同問(wèn)題時(shí)的排放量比更常見(jiàn)的LLM 高級(jí)AI型號(hào)的CO&#8322;回答相同問(wèn)題時(shí)的排放量比更常見(jiàn)的LLM Jul 06, 2025 am 12:37 AM

根據(jù)最近的一項(xiàng)研究,我們?cè)噲D使AI模型的功能越精確,其碳排放量就越大 - 某些提示產(chǎn)生的二氧化碳比其他提示高達(dá)50倍。

See all articles