成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一文讓你明白 Git 分支是如何工作的

系統 Linux
分支是 Git 版本跟蹤的核心功能,并且經常被使用相同軟件代碼庫的團隊使用。我們將深入研究它們如何在幕后工作,以及如何使用它們來改進 Git 工作流程。

分支是 Git 版本跟蹤的核心功能,并且經常被使用相同軟件代碼庫的團隊使用。我們將深入研究它們如何在幕后工作,以及如何使用它們來改進 Git 工作流程。

什么是分支?

分支用于拆分 Git 歷史記錄。您可以將 Git 提交想象成一系列可以追溯到過去的更改。您可以“簽出checkout”任何這些提交,并將本地目錄及時移回提交時的狀態。

分支通常用于處理實驗性功能,或需要一段時間的更改,或任何其他可能破壞存儲庫的東西。例如,您可能正在重構代碼庫的一個重要組件,并且在完成之前,您希望master 分支保持穩定。

一旦新feature 分支穩定了,它就可以重新合并到master中,通常是通過 拉取請求,這是一個允許在進行更改之前進行代碼審查和測試的過程。

然而,在幕后,分支的工作方式與您最初預期的略有不同。在 Git 中,分支只是指向特定提交的標簽或指針。就是這樣,master 分支只是指向最新的提交master;當您進行新的提交時,標簽會更新為指向新的提交。

雖然將提交視為及時推進是有用的;實際上,Git 提交指向彼此。每個提交都有對最后一次提交的引用,并且這個鏈用于構造存儲庫的狀態。

但是,如果您創建一個新分支,則情況會有所不同。您簽出的任何分支(使用git checkout <branch>)都將用作新提交的標簽。

要在此示例中創建分支,您必須首先確保將存儲庫 HEAD 設置為master 分支。這是因為您實際上可以從任何地方開始創建分支——包括過去的提交或其他分支上的提交。

git checkout master

然后創建一個新分支,并交換到它:

git branch feature
git checkout feature

此時,您的存儲庫中的任何內容都沒有改變。feature 和分支標簽都master 指向同一個提交。

但是,您從此時開始提交的任何內容都將添加到feature 分支中。更具體地說,將創建一個新提交,設置為指向當前提交,并且“功能”標簽將更新為指向這個新提交。

您甚至可以checkout master 在主分支上進行更多提交。它不會影響feature 分支,因為標簽所知道的只是它指向那個特定的提交。它不會隨master 標簽更新。

合并和變基(Merging 和 Rebasing)

當然,如果分支永遠卡在那里,它們就不會太有用了,因此 Git 提供了將它們合并回master 分支的工具。從技術上講,只要歷史兼容,您就可以將子分支合并到任何其他分支中。

最簡單的情況是您有一個只需要合并回來的簡單分支。您可以簽出master 分支,然后運行git merge feature 以將在功能分支上所做的所有提交“重播”到 master 上。

這會將它們合并到主時間線中,并使用更改創建一個新的“合并提交”。

但它并不總是那么簡單,而且在許多情況下,您將遇到 需要解決的合并沖突。這可能包括分支修改文件中的相同行、文件移動或刪除,或feature 在創建分支后更改軟件時出現的其他類型的錯誤。

如果您有一個長時間運行的feature 分支,則將這個問題最小化的一種方法是執行頻繁的合并,這次相反——從master 主支到 feature 分支上,這保持feature 最新,雖然它并沒有真正減少所需的工作量,但它可以防止它陷入一片混亂。

這種策略對于長期存在的分支很常見,通常被認為是 Git 的最佳實踐。

在這種情況下也使用的另一個工具是變 基。基本上,變基就像拿起整個分支并將其移動到從新位置開始,通常是存儲庫中的最新提交。在某些情況下,這會導致更清晰的 Git 歷史記錄,并且是某些復雜情況的首選解決方案。

然而,Git 歷史是“不可變的”,并且由于這種變基復制提交而不是實際移動它們。如果沒有與您的團隊正確協調,這可能會導致共享分支上的許多問題——如果您重新設置基準,并且您的同事在“舊”、現已刪除的功能分支上進行新提交,它將被擱置。他們將不得不隱藏提交并將其彈出到新分支以協調更改。

如何使用分支?

要開始創建新分支,您需要將存儲庫置于正確狀態,以便新分支標簽從您想要的位置開始。如果您要從 分支master,只需簽出整個分支以從最新提交開始。否則,您可以通過簽出單個提交將您的 repo 置于分離的 HEAD 狀態。

git checkout master
git checkout aa3e570923b8ee61414cec17d9033faab4f084a6

然后,您可以創建新分支,并使用checkout切換到它:

git branch feature
git checkout feature

這可以在一個命令中完成,帶有-b 結帳標志:

git checkout -b feature

此時,您的 repo 中所做的任何提交都將提交到新分支。

如果您需要再次交換分支,只需運行git checkout master 即可恢復正常。

如果您有需要移動的本地更改,可以將它們放入git stash. 更改將被存儲,并且可以在交換分支后重新應用。

git stash  
git checkout feature
git stash apply
責任編輯:龐桂玉 來源: Linux公社
相關推薦

2025-06-04 03:21:00

RAGRetrievalGeneratio

2022-09-29 10:26:59

iOSScaffoldflutter

2023-05-29 08:45:45

Java注解數據形式

2025-05-21 09:32:28

2021-01-21 14:26:56

大數據互聯網大數據應用

2024-09-26 07:27:27

2020-07-10 08:03:35

DNS網絡ARPAne

2023-03-10 22:08:20

2021-10-20 08:49:30

Vuexvue.js狀態管理模式

2024-06-20 08:06:30

2018-05-21 10:20:22

人工智能機器學習神經網絡

2018-02-02 11:17:42

IaaSPaaSSaaS

2024-05-13 10:45:25

中介模式面向對象數量

2024-05-10 08:43:04

外觀模式接口系統

2024-05-09 09:09:19

組合模式對象

2019-08-27 14:46:59

ElasticSearES數據庫

2021-05-06 08:03:07

IPIP網絡模式calicok8s

2020-11-12 09:14:25

JAVA.IO、字符編

2019-07-03 15:32:26

路由器網絡系統

2024-10-28 00:00:25

GitCIfeature
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级片免费在线观看 | 999久久久久久久久6666 | 亚洲一区二区三区视频 | 日日夜夜精品视频 | 亚洲精品68久久久一区 | 一区二区三区精品视频 | 99视频免费看 | 欧美一二三 | 久久久免费观看视频 | 日本免费视频 | 一级无毛片 | 国产视频久久 | 在线看av网址| 日韩一区二区三区精品 | 狠狠色狠狠色综合系列 | 日韩电影免费在线观看中文字幕 | 欧美国产精品一区二区三区 | 国产精品久久国产精品久久 | gogo肉体亚洲高清在线视 | 亚洲欧美在线观看 | 欧美日韩综合一区 | 亚洲免费在线 | 看特级黄色片 | 国产精品毛片无码 | 中文字幕一区二区三区在线观看 | 国产一区二区精品在线 | 欧美激情va永久在线播放 | 97综合在线| 欧美精品成人一区二区三区四区 | 日韩欧美国产一区二区 | 国产中文区二幕区2012 | 国产午夜精品一区二区三区嫩草 | 亚洲视频免费在线播放 | 97久久久久久 | 欧美一区二区三区在线 | 亚洲福利一区二区 | 久久精品视频在线观看 | 成年人在线观看 | 久久国产成人 | 手机看片1 | 黄色一级免费观看 |