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

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

快點開始git:在git中分支

Feb 18, 2025 am 10:12 AM

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

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

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

要點總結(jié)

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

什麼是分支?

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

但如果實驗成功,Git 可以輕鬆地將實驗性元素合併到主分支中。而且,在後期,如果您改變主意,可以輕鬆地恢復到合併之前的項目狀態(tài)。

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

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

注意:分支約定

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

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

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

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

<code>git branch</code>

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

<code>git branch -a</code>

Jump Start Git: Branching in Git

如上所示,紅色分支表示它們位於遠程存儲庫。在我們的例子中,我們可以看到 origin 遠程存儲庫中存在的各種分支。

創(chuàng)建分支

在 Git 中創(chuàng)建分支有多種方法。要創(chuàng)建一個新分支並保留在當前分支中,請運行以下命令:

<code>git branch test_branch</code>

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

<code>git checkout test_branch</code>

Jump Start Git: Branching in Git

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

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

Jump Start Git: Branching in Git

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

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

Jump Start Git: Branching in Git

要將當前分支重命名為 renamed_branch,請運行以下命令:

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

刪除分支

要刪除分支,請運行以下命令:

<code>git branch</code>

Jump Start Git: Branching in Git

注意:除非必須,否則不要刪除分支

由於保留分支實際上沒有任何缺點,因此我建議除非存儲庫中的分支數(shù)量變得太大而難以管理,否則不要刪除它們。

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

Jump Start Git: Branching in Git

如您所見,Git 會向您發(fā)出警告併中止操作,因為數(shù)據(jù)尚未與分支合併。

分支和 HEAD

既然我們有機會嘗試分支的基礎(chǔ)知識,那麼讓我們花一點時間討論分支在 Git 中的工作方式,並介紹一個重要的概念:HEAD。

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

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

Jump Start Git: Branching in Git

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

高級分支:合併分支

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

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

Jump Start Git: Branching in Git

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

Jump Start Git: Branching in Git

要將 new_feature 與主分支合併,請運行以下命令(首先確保主分支處於活動狀態(tài)):

<code>git branch</code>

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

Jump Start Git: Branching in Git

要將 another_featurenew_feature 合併,只需運行以下命令(確保 new_feature 分支處於活動狀態(tài)):

<code>git branch -a</code>

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

Jump Start Git: Branching in Git

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

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

Jump Start Git: Branching in Git

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

我們將在下一章詳細討論衝突。我前面提到過,分支可以通過簡單的提交路徑來可視化。當我們合併分支並且沒有衝突時,例如上面那樣,只有分支路徑發(fā)生更改,並且分支的 HEAD 會更新。這稱為快速前進類型的合併。

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

<code>git branch</code>

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

雖然快速前進樣式的合併是默認的,但通常最好對合併到主分支的合併使用非快速前進方法。從長遠來看,標識新功能合併的新提交可能是有益的,因為它將負責新功能的代碼部分邏輯地分離到一個提交中。

結(jié)論

您學到了什麼?

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

接下來是什麼?

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

關(guān)於 Git 分支的常見問題

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

Git 分支是一個強大的功能,允許開發(fā)人員創(chuàng)建單獨的開發(fā)線路。這在處理新功能或修復程序時尤其有用,因為它允許您將工作與主項目隔離開來。功能或修復程序完成後並經(jīng)過測試後,可以將其合併回主項目。這確保了主項目保持穩(wěn)定,並允許多個開發(fā)人員同時處理不同的功能而不會相互干擾。

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

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

  • 如何在 Git 中合併分支?

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

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

Git 分支指針是一個包含其指向的提交的 SHA1 哈希的文件。當您創(chuàng)建新分支時,Git 會創(chuàng)建一個新的指針,並隨著您進行的每次新提交一起移動它。這允許 Git 跟蹤項目的歷史記錄。

  • 如何在 Git 中刪除分支?

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

  • Git 中的快速前進合併和三方合併有什麼區(qū)別?

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

  • 如何查看 Git 存儲庫中的所有分支?

您可以使用不帶參數(shù)的 <code>git branch</code> 命令查看 Git 存儲庫中的所有分支。這將列出所有本地分支。如果您還想查看遠程分支,可以使用 -a 選項,如下所示:<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ā)生在您檢出提交而不是分支時。這可能很危險,因為當您檢出到另一個分支時,您所做的任何更改都將丟失。為避免這種情況,請務(wù)必始終檢出到分支,而不是提交。

  • 如何在 Git 中合併分支時解決衝突?

在 Git 中合併分支時,如果同一文件的同一部分在兩個分支中都被修改,則可能會發(fā)生衝突。 Git 將標記該文件為“未合併”,您需要手動解決衝突。您可以通過在文本編輯器中打開文件,找到衝突標記(<<<<<<<),並決定保留哪些更改來執(zhí)行此操作。解決所有衝突後,您可以使用 git add 添加文件,然後使用 git commit 提交它。

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

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

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

在開發(fā)類似於Udemy的學習平臺時,重點不僅僅是內(nèi)容質(zhì)量。同樣重要的是如何交付內(nèi)容。這是因為現(xiàn)代教育平臺依賴於媒體,快速且易於消化。

用於購買SSL證書的經(jīng)濟有效的轉(zhuǎn)售商平臺 用於購買SSL證書的經(jīng)濟有效的轉(zhuǎn)售商平臺 Jun 25, 2025 am 08:28 AM

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

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

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

由於新的Microsoft AI型號 由於新的Microsoft AI型號 Jul 05, 2025 am 12:44 AM

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

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

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

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

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

高級AI型號的CO&#8322;回答相同問題時的排放量比更常見的LLM 高級AI型號的CO&#8322;回答相同問題時的排放量比更常見的LLM Jul 06, 2025 am 12:37 AM

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

See all articles