Git最強大的特性之一是它的輕量級分支。它們允許您高效地處理並行的開發階段。開發人員甚至可以為單獨的bug建立單獨的分支。在時間和空間上,分支幾乎都是免費的。
許多git工作流同時處理長期分支和臨時分支。因此,在開發過程中經常需要刪除分支。有時需要從遠端伺服器以及本地分支中刪除共享分支。
首先,如果您仍在使用git,那麼很有可能會建立一個分支,然後決定不需要這樣做。或者你可能正在用樹枝做實驗,想自己清理一下。這很好,因為git中的分支是一個輕量級操作。它的速度非常快,並有效地利用了磁碟空間。
因此,許多git開發工作流都鼓勵分支,即使對於非常小或很短的任務也是如此。例如,一個常見的策略是為單個bug修復建立一個分支。即使只有一個作者在一個檔案中做了一行更改,這也是正確的。
由於這些原因,建立和刪除分支是需要很好理解的操作。您可能會發現自己經常在典型的開發工作流中刪除分支。
以下示例引用了具有以下結構的示例儲存庫:
$ git branch -vv1 dev 1ae41e8 [origin/dev] first commit2 * main 1ae41e8 [origin/main] first commit請注意,每個本地分支都有一個來自遠端:origin的對應上游分支。
刪除分支的基本命令語法是:
git branch (-d | -D) [-r] <branchname>...命令的最簡單形式是刪除本地分支,前提是該分支的所有更改都已合併:
$ git branch -d dev無法刪除當前處於活動狀態的分支;如果嘗試刪除,將收到如下訊息:
error: Cannot delete branch 'main' checked out at '/tmp/sandbox'當一切順利時,您將看到一條確認訊息:
Deleted branch dev (was 1ae41e8).如果刪除一個只存在於本地的分支,並且沒有合併更改,則會丟失這些更改。因此,在這種情況下,git將拒絕刪除分支,預設情況下:
error: The branch ‘dev’ is not fully merged.If you are sure you want to delete it, run 'git branch -D dev’.如錯誤訊息所示,您可以使用-D標誌強制刪除。但是,git允許您刪除遠端存在的未合併本地分支:
warning: deleting branch ‘dev’ that has been merged to'refs/remotes/origin/dev’, but not yet merged to HEAD.Deleted branch dev (was 9a6d20b).刪除遠端分支是完全不同的。您將使用gitpush命令和-d標誌來刪除。然後,提供遠端伺服器(通常是源站)的名稱和分支名稱:
$ git push -d origin devTo github.com:bobbykjack/sandbox.git- [deleted] dev與命令列git程式不同,GitHub的桌面應用程式只允許刪除活動分支。您可以透過分支選單執行此操作,方法是選擇刪除選項並確認:
GitHub桌面不允許您刪除預設的分支,例如main,即使git本身支援這一點。如果預設分支是當前活動的分支,則應用程式將禁用選單操作。
如果分支還表示遠端分支,GitHub Desktop還提供了從遠端刪除它的選項:
GitKraken在左側邊欄中顯示儲存庫的本地和遠端分支。必須分別刪除每個。
將滑鼠懸停在相應的分支名稱上,然後單擊分支操作選單,該選單看起來像三個垂直點。從選單中,選擇刪除<;分支名稱>;:
您將看到一條確認訊息,通知您這是一次破壞性操作。您可以透過“刪除”按鈕確認是否要繼續:
為了反映git命令列程式的預設行為,必須首先切換到要刪除的分支以外的分支。否則,您將看到一條錯誤訊息:
刪除帶有Tower的分支與刪除帶有GitKraken的分支非常相似。本地和遠端分支顯示在左側的面板中。右鍵單擊任何分支,然後從關聯選單中選擇“刪除”選項:
一個關鍵區別是,在確認過程中,可以將遠端分支與其本地分支一起刪除:
GitHub只充當遠端源,因此預設情況下那裡的分支是遠端的。如果使用GitHub網站刪除分支,則必須使用此處的其他方法之一刪除相應的本地分支。
與GitHub桌面應用程式一樣,GitHub網站將不允許您刪除預設分支。該選項根本不會出現。不過,刪除分支很簡單。在儲存庫的“程式碼”頁中,單擊“分支”連結,找到要刪除的分支,然後單擊“刪除此分支”圖示,該圖示看起來像一個垃圾桶:
請注意,沒有檢查未合併的更改,因此在GitHub上,分支將立即被刪除。但是,由於它總是表示一個遠端分支,因此這應該是您所期望的行為。
注意,刪除之後,您將看到一個按鈕來恢復分支。不過,這只是一個有用的撤消功能,以防意外單擊刪除圖示。不要依賴它,因為一旦你重新整理或離開頁面,你就會失去選擇!
Bitbucket與GitHub一樣,不允許刪除預設分支。Bitbucket將其稱為儲存庫設定中的主分支。您可以透過相應的操作選單刪除“分支”選項卡上列出的任何其他分支:
如果要執行大型清理操作,也可以一次刪除多個分支:
Git分支會使您的工作流複雜化,特別是帶有本地、遠端和跟蹤分支的分支。但是對於簡單的日常開發,您可能一直在建立和刪除本地分支。這是您應該習慣的典型git工作流的一個核心方面。
...交的第一步是“暫存”新的或更新的項。看看上面的輸出如何讓你知道有“未老化”的變化?您可以使用以下命令暫存目錄中的所有內容(遞迴,即包括子資料夾及其檔案): ...
...會想退出應用程式並解除安裝它,而不是試圖弄清楚它是如何工作的。躺下,讓這種感覺過去,準備好以可消化的塊探索應用程式。你一定會發現一些有用的(很酷的)特性。 ...
... 你肯定在想這怎麼可能,對吧?在本文中,您將學習如何下載和安裝PsExec,如何啟動它,以及一些基本命令。不費吹灰之力,讓我們潛水吧! ...
...流,分享你的技能,幫助開源世界受益。在本文中,瞭解如何將程式碼貢獻給GitHub上的儲存庫或任何託管的git服務。 ...
想在Arch Linux上安裝軟體包但不知道如何安裝?很多人在第一次從基於Debian的發行版遷移到Arch時都面臨這個問題。但是,您可以使用包管理器在基於Arch的系統上輕鬆地管理包。 ...