![](/img/trans.png)
[英]I have git repo with one branch: master. How do I rename the branch locally and on the remote repo?
[英]How do I rename my Git 'master' branch to 'release'?
我們希望為我們的項目實施一項新政策,即現在將 master 分支稱為 release 分支,以確保更清楚應該如何使用該分支。 當然,我們也會開發和發布候選分支。
我知道我可以通過簡單地使用以下命令在本地重命名主分支:
git branch -m master release
然而,這只是局部的。 即使我將其推送到遠程,HEAD 仍然指向遠程主分支。 我想完全擺脫 master 分支,並在初始克隆時創建默認的本地分支,即發布。
我怎樣才能做到這一點?
似乎由於源在Gitorious服務器上,我在刪除 master 分支時出錯。 我現在正在嘗試查看是否可以更改此設置,以便默認分支為“發布”。
git checkout -b release master # Create and switch to the release branch
git push -u origin release # Push the release branch to the remote and track it
git branch -d master # Delete local master
git push --delete origin master # Delete remote master
git remote prune origin # Delete the remote tracking branch
請注意,如果您使用的是GitHub ,則需要在第 3 步之后首先更改 GitHub 上的“默認”分支:
在 github.com 上的存儲庫中,轉到Settings → Branches → Default Branch 。 將其更改為發布,然后執行其余步驟。
git checkout master
git branch release
git checkout release
git push origin release
git push origin :master
git branch -d master
注意:此答案適用於您具有命令行訪問權限的自托管 Git 服務器。
由於確實不允許嘗試從客戶端刪除remote master
,並且我確實假設禁止denyDeleteCurrent
是有道理的,因此我不想更改該設置。
但是,我發現,如果您可以通過命令行訪問遠程服務器,重命名主服務器的最簡單方法是直接在遠程服務器上運行重命名命令。
這對我有用:
git branch -m master release
現在遠程存儲庫使用release
作為其默認分支,並且任何客戶端在該存儲庫上的任何git clone
都會默認檢出 release 分支。
在設置裸存儲庫以根據您的需要對其進行配置后,這也非常有用。
正如其他人之前所說,這里的問題是 Gitorious,它不允許您默認刪除 HEAD 分支。 您有兩種選擇可以解決這個問題。 一種是登錄Gitorious服務器(用ssh),在文件服務器上找到Git倉庫,添加:
[receive]
denyDeleteCurrent = warn
到配置。
一個更簡單的選擇是更改默認分支。 在 Gitorious Web 界面中轉到您的存儲庫,按“編輯存儲庫”,然后設置“將 Git 存儲庫中 HEAD 指向的符號引用更改為:”。 完成此操作后,您可以刪除 master 分支。
如果您在使用GitHub 時遇到此問題,請執行上述步驟,直到刪除遠程分支。 它不會讓你這樣做。 然后登錄到 Web 界面並在存儲庫上轉到Settings → Branches → Default Branch 。 將其更改為新分支並執行其余步驟。
從 Git 2.28(2020 年 7 月 27 日發布)開始,您現在可以配置在初始化新存儲庫時創建的分支的名稱:
$ git config --global init.defaultBranch main
設置此變量后,運行 git init 將生成一個初始分支為 main 的存儲庫:
$ git init
在 /home/thomas/test-git-repo/.git/ $ git status 在分支 main 中初始化空的 Git 存儲庫
還沒有提交
無需提交(創建/復制文件並使用“git add”進行跟蹤)發行說明: https : //lore.kernel.org/git/xmqq5za8hpir.fsf@gitster.c.googlers.com/
cc基利
理想情況下,您想要設置跟蹤,請執行以下操作:
git push origin HEAD:release
git checkout --track origin/release
現在,您要刪除其他人嗎?
git branch -d master
git push origin :master
簡單的!
由於您已完成重命名分支,因此將 HEAD 設置為遠程release
git remote set-head origin release
然后要在遠程刪除master
分支,您必須是管理員,至少在 GitHub 上。 請參閱此帖子以獲取更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.