Git - 術語



理解 Git 術語對於有效地使用 Git 作為版本控制系統至關重要。以下是基本 Git 術語的詳細探討,包括關鍵概念和命令的定義和解釋。

Git 倉庫

倉庫(或稱為 repo)是 Git 中的基本單元,所有專案檔案及其修訂歷史都儲存在其中。倉庫有兩種型別

Git 使用一個稱為**倉庫**的有組織的儲存系統來處理專案的 檔案和歷史記錄。

  • **本地倉庫:**這是您本地機器上的倉庫版本。它包括工作目錄、暫存區和包含實際版本歷史記錄的 .git 目錄。

  • **遠端倉庫:**這是託管在伺服器或雲服務(如 GitHub、GitLab 或 Bitbucket)上的倉庫版本。遠端倉庫允許多個開發人員協作處理同一個專案。

工作目錄

工作目錄是您執行實際工作的地方。Git 跟蹤的所有檔案都儲存在工作目錄中。

  • Git 會監視這些檔案,併為提交做好準備。

  • 從本質上講,它充當工作區,在完成並提交到 Git 倉庫之前,修改操作都在這裡進行。

暫存區(索引)

暫存區,也稱為索引,是一個空間,您可以在將更改提交到倉庫之前準備更改的快照。當您使用**>git add**時,更改會被移動到暫存區。這使您可以控制哪些更改包含在下次提交中。

提交

提交是專案在特定時間點的快照。它記錄對倉庫的更改,幷包含描述所做更改的提交訊息。每個提交都由唯一的雜湊值(SHA-1 校驗和)標識。命令**git commit**從暫存區的更改建立新的提交。

分支

Git 中的**分支**是從主專案分離出來的獨立開發路徑。

  • 它允許獨立地處理專案功能或版本。

  • 建立、重新命名、列出和刪除分支是重要的操作。

  • 分支透過允許將它們拉取或推送到遠端倉庫,然後合併到主專案中,從而實現高效的版本控制和協作。

  • 分支由**git branch、git checkout 和 git merge**等命令管理。

合併

合併是將一個分支中的更改整合到另一個分支中的過程。當您將一個分支合併到另一個分支時,Git 會合並來自這兩個分支的更改。命令**git merge**用於執行此操作。合併可能很簡單,也可能需要解決衝突(如果更改重疊)。

變基

變基是合併的替代方法,它透過重放提交將一個分支中的更改整合到另一個分支上。**git rebase**命令將一個分支的提交應用到另一個分支上,從而建立線性歷史記錄。變基可以簡化提交歷史記錄,但應謹慎使用,尤其是在共享分支上。

提交歷史

提交歷史記錄是倉庫中所有提交按時間順序排列的列表。歷史記錄中的每個提交都由唯一的雜湊值標識,幷包含元資料,例如作者、日期和提交訊息。命令**git log**顯示提交歷史記錄,允許您檢視過去的更改。

標籤

標籤是對特定提交的引用,用於標記倉庫歷史記錄中的重要點,例如釋出或里程碑。標籤可以是輕量級的(簡單的指標)或帶註釋的(包含其他元資料)。命令**git tag**用於建立和管理標籤。

遠端

遠端是託管在伺服器或雲服務上的倉庫版本。它允許與他人協作,透過提供一個集中的位置來共享更改。用於處理遠端的常用命令包括**git remote、git fetch、git pull 和 git push**。

推送

在 Git 中,使用**git push**命令將本地倉庫中的更改上傳到遠端倉庫。

  • 使用**git push**命令,可以將本地分支中的提交移動到遠端倉庫中的指定分支。

  • 通常,該命令以分支名稱和倉庫名稱作為輸入。

  • 推送應謹慎進行,因為它有可能覆蓋遠端倉庫中所做的更改。

拉取

在 Git 中,使用**git pull**命令從遠端倉庫獲取並整合更改到本地倉庫。

  • 使用**git pull**命令,從遠端伺服器檢索更新並將其合併到您當前的工作分支中。

  • 拉取請求也是團隊成員在功能分支中的更改準備好進行審查時獲得通知的方式。

  • 在開發人員透過 GitHub 等遠端服務傳送拉取請求後,程式碼將被審查併合併到主分支中。

獲取

**git fetch**命令從遠端倉庫檢索更新,但不會將其合併到您的本地分支中。它下載新的提交、分支和標籤,但不會更改您的工作目錄。獲取對於在整合更改之前檢視更改很有用。

  • 它可以與**git fetch --all**等引數一起使用,以從倉庫的所有分支獲取更新並更新遠端跟蹤分支。

  • 在選擇將更新合併到本地倉庫之前,可以使用此命令檢視來自遠端倉庫的更改。

衝突

當 Git 無法自動合併來自不同分支的更改時,就會發生衝突,因為它們重疊或相互矛盾。衝突需要手動解決,方法是編輯受影響的檔案,然後暫存已解決的更改。衝突在包含衝突標記的檔案中指示,可以使用工具或編輯器解決。

HEAD

Git 中的符號引用**HEAD**指的是活動分支或提交。

  • 它是當前正在檢出的分支中最新的提交。

  • 透過使用諸如**git checkout**之類的命令來切換分支,**HEAD**會被更新為指向新分支的頂端,這反映了該分支最新的提交。

檢出

Git 允許使用者使用**git checkout**命令在倉庫中的多個分支或版本之間導航。

  • 要切換到特定分支(例如 main 或 beta 分支),請使用**git checkout branch-name**。

  • 這使您可以從一個開發分支過渡到另一個開發分支,例如從穩定分支到 beta 版本,然後再返回。

克隆

個人可以使用**git clone**命令建立遠端倉庫的本地副本。

  • 透過執行**git clone repo**(其中“repo”是倉庫地址),可以將完整的倉庫(包括檔案和歷史記錄)複製到您的本地計算機。

  • 要從 GitHub 等平臺獲取倉庫的本地版本,我們必須使用此命令。

Fork

託管在遠端伺服器上的倉庫的克隆稱為 Git fork,它允許使用者自由地試驗和更改倉庫,而不會對原始專案產生影響。

  • 通常,開發人員會 fork 一個倉庫,以便他們可以獨立地檢查和修復更新。

  • 在進行更新(例如錯誤修復)後,您可以透過提交拉取請求來建議將您的更改合併回原始倉庫。

  • 此過程在促進貢獻和錯誤修復的同時,維護了主要專案的完整性。

狀態

Git 中的**git status**命令提供了本地倉庫當前狀態的摘要。

  • 使用者可以使用**git status**檢視有關未跟蹤檔案、暫存更改和暫存區的資訊。

  • 它對於記錄已完成或仍需提交的修改以及瞭解工作樹狀態很有用。

DIFF

git diff 命令是一個靈活的工具,用於顯示檔案或提交之間的差異。

  • 可以顯示索引和HEAD之間、提交之間以及工作目錄和索引(暫存區)之間的更改。

  • 本質上,git diff 顯示了已進行的更改以及已準備好提交的修改。

重置

git reset 命令用於透過調整儲存庫的狀態來撤消更改。

  • 工作目錄、索引(暫存區)和HEAD都可以重置。

  • git reset 可以採用三種主要形式

    • 軟重置:透過將HEAD移動到之前的提交來保留工作目錄和索引中的更改。

    • 混合重置:在移動HEAD並更新索引的同時保留工作目錄中的更改。

    • 硬重置:刪除所有修改並重置HEAD、索引和工作目錄到之前的提交。

暫存

要臨時儲存工作目錄中未提交的更改,請在 Git 中使用git stash 命令。

  • 因此,使用者可以在不提交已完成工作的情況下處理多個專案或切換分支。

  • 將儲存的修改應用回工作目錄,允許我們在準備好時繼續之前的工作。

  • 這對於管理正在進行的工作非常有用,避免弄亂提交歷史記錄。

反轉

Git 中的git revert 命令用於建立新的提交,以反轉先前提交的更改。

  • 它類似於撤消命令,因為它會新增一個新的提交來撤消指定提交所做的更改,而不是刪除歷史記錄。

  • 此方法成功地反轉了修改,同時保留了專案的歷史記錄。

子模組

子模組是嵌入在另一個儲存庫中的儲存庫。它允許您將外部儲存庫作為專案的一部分包含和管理。子模組使用git submodule add、git submodule update 和 git submodule sync 等命令進行管理。

追溯

git blame 命令顯示誰最後修改了檔案的每一行。它有助於跟蹤更改並瞭解特定行的歷史記錄。追溯輸出包括每行的提交雜湊、作者姓名和日期。

櫻桃採摘

Git 的git cherry-pick 命令可以將特定提交從一個分支應用到另一個分支,而無需合併整個分支。

  • 要從一個分支(例如 beta 分支)選擇並應用特定更改到另一個分支(例如主專案分支),請使用git cherry-pick commit-id

  • 這有助於傳輸特定修改或更正錯誤,而不會影響分支中進行的其他提交。

索引

暫存區,也稱為 Git 索引,充當儲存庫和工作目錄之間的橋樑。

  • 它用於在提交更改之前準備和組織更改。

  • 當您將檔案新增到暫存區時,這些檔案將新增到索引中。

  • 一旦您提交,儲存庫就會記錄索引修改並將HEAD更新為反映新的提交。

主分支

Git 中的mastermain 分支是用於開發的主要分支,也是儲存庫中的預設分支。

  • 克隆儲存庫時通常獲得的第一個分支稱為master(或main,因為許多儲存庫現在使用此術語以更具包容性)。

  • 專案的開發圍繞此分支展開,該分支通常用於維護可靠的、可用於生產的程式碼。

Origin

在 Git 中,origin 是克隆專案所在的遠端儲存庫的 URL 的簡寫別名。

  • 它透過提供本地別名而不是使用完整 URL 來簡化對遠端儲存庫的引用。

  • 這使得更容易執行諸如獲取、推送和拉取遠端儲存庫更改等操作。

.gitignore

Git 中的.gitignore 檔案指示 Git 不應將哪些檔案或目錄新增到暫存區,而是忽略它們。

  • 它不會影響 Git 當前正在跟蹤的檔案;它僅適用於未跟蹤的檔案。

  • 這有助於控制新增到儲存庫的檔案。

壓縮

Git 中的壓縮描述了將多個提交合併到單個提交中的過程。

  • 通常,互動式變基命令用於此目的。

  • 壓縮有助於將類似的更改組織到單個、更易於管理的分支中,然後再將它們合併到主分支中。

  • 該過程涉及將來自多個提交的更改合併到單個檔案中,然後將其新增到索引中。

git rm

要從工作目錄、儲存庫和 Git 索引中刪除檔案,請使用git rm 命令。

  • 它確保從工作目錄以及暫存區中刪除跟蹤的檔案。

  • 在從版本控制中刪除檔案或不再需要的檔案時,此命令非常有效。

廣告

© . All rights reserved.