-
1. 入門
-
2. Git 基礎
-
3. Git 分支
-
4. 伺服器上的 Git
- 4.1 協定
- 4.2 在伺服器上取得 Git
- 4.3 產生您的 SSH 公開金鑰
- 4.4 設定伺服器
- 4.5 Git Daemon
- 4.6 智慧 HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方託管選項
- 4.10 摘要
-
5. 分散式 Git
-
A1. 附錄 A:其他環境中的 Git
- A1.1 圖形化介面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.5 Sublime Text 中的 Git
- A1.6 Bash 中的 Git
- A1.7 Zsh 中的 Git
- A1.8 PowerShell 中的 Git
- A1.9 摘要
-
A2. 附錄 B:將 Git 嵌入應用程式中
-
A3. 附錄 C:Git 指令
3.3 Git 分支 - 分支管理
分支管理
現在您已經建立、合併和刪除了一些分支,讓我們看看一些分支管理工具,這些工具在您開始頻繁使用分支時會派上用場。
git branch
指令的功能不僅僅是建立和刪除分支。如果您在不帶任何引數的情況下執行它,您將獲得目前分支的簡單清單。
$ git branch
iss53
* master
testing
注意前綴為 master
分支的 *
字元:它表示您目前已檢出的分支(即 HEAD
指向的分支)。這表示如果您在這一點提交,master
分支將會隨著您的新工作向前移動。若要查看每個分支上的最後一次提交,您可以執行 git branch -v
。
$ git branch -v
iss53 93b412c Fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 Add scott to the author list in the readme
有用的 --merged
和 --no-merged
選項可以將此清單篩選為您已合併或尚未合併到您目前所在分支的分支。若要查看哪些分支已合併到您目前所在的分支中,您可以執行 git branch --merged
。
$ git branch --merged
iss53
* master
因為您稍早已經合併了 iss53
,所以您會在清單中看到它。此清單上前面沒有 *
的分支通常可以安全地使用 git branch -d
刪除;您已經將它們的工作併入另一個分支中,因此不會遺失任何內容。
若要查看所有包含您尚未合併之工作內容的分支,您可以執行 git branch --no-merged
。
$ git branch --no-merged
testing
這會顯示您的其他分支。因為它包含尚未合併的工作,因此嘗試使用 git branch -d
刪除它會失敗。
$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
如果您真的想要刪除該分支並遺失該工作,您可以如實用訊息所指出,使用 -D
強制執行。
提示
|
如果沒有將提交或分支名稱作為引數提供,上面描述的 您隨時可以提供額外的引數來詢問相對於其他分支的合併狀態,而無需先檢出該其他分支,例如,哪些內容尚未合併到
|
變更分支名稱
注意
|
請勿重新命名其他協作者仍在使用的分支。請勿在未閱讀變更 master 分支名稱一節的情況下,重新命名 master/main/mainline 等分支。 |
假設您有一個名為 bad-branch-name
的分支,並且您想要將其變更為 corrected-branch-name
,同時保留所有歷史記錄。您也想要變更遠端(GitHub、GitLab 或其他伺服器)上的分支名稱。您要如何執行此動作?
使用 git branch --move
指令在本機重新命名分支。
$ git branch --move bad-branch-name corrected-branch-name
這會將您的 bad-branch-name
取代為 corrected-branch-name
,但此變更目前僅限於本機。若要讓其他人看到遠端上已修正的分支,請推送它。
$ git push --set-upstream origin corrected-branch-name
現在,讓我們簡要了解一下我們目前的位置。
$ git branch --all
* corrected-branch-name
main
remotes/origin/bad-branch-name
remotes/origin/corrected-branch-name
remotes/origin/main
請注意,您位於 corrected-branch-name
分支上,而且它在遠端上可用。不過,名稱錯誤的分支仍然存在於那裡,但您可以透過執行下列指令將其刪除。
$ git push origin --delete bad-branch-name
現在,錯誤的分支名稱已完全取代為修正過的分支名稱。
變更 master 分支名稱
警告
|
變更像是 master/main/mainline/default 這類分支的名稱,將會破壞您的儲存庫所使用的整合、服務、輔助工具以及建置/發布腳本。在執行此操作之前,請務必與您的協作者諮詢。同時,請務必徹底搜尋您的儲存庫,並更新程式碼和腳本中任何對舊分支名稱的參照。 |
使用以下命令將您的本地 master
分支重新命名為 main
$ git branch --move master main
由於它已重新命名為 main
分支,因此現在沒有本地 master
分支了。
要讓其他人看到新的 main
分支,您需要將其推送到遠端。這會使重新命名的分支在遠端上可用。
$ git push --set-upstream origin main
現在我們最終會得到以下狀態
$ git branch --all
* main
remotes/origin/HEAD -> origin/master
remotes/origin/main
remotes/origin/master
您的本地 master
分支已消失,因為它已被 main
分支取代。 main
分支存在於遠端。但是,舊的 master
分支仍然存在於遠端。其他協作者將繼續使用 master
分支作為他們工作的基礎,直到您進行一些進一步的變更。
現在您還有一些任務要完成,才能完成轉換
-
任何依賴此專案的專案都需要更新其程式碼和/或設定。
-
更新任何測試執行器設定檔。
-
調整建置和發布腳本。
-
重新導向儲存庫主機上的設定,例如儲存庫的預設分支、合併規則以及其他與分支名稱相符的設定。
-
更新文件中對舊分支的參照。
-
關閉或合併任何以舊分支為目標的提取請求。
在您完成所有這些任務,並確定 main
分支的運作方式與 master
分支相同之後,您可以刪除 master
分支
$ git push origin --delete master