簡體   English   中英

如何將我的 Git 'master' 分支重命名為 'release'?

[英]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 上的存儲庫中,轉到SettingsBranchesDefault Branch 將其更改為發布,然后執行其余步驟。

查看你的主分支

git checkout master

創建您的發布分支並切換到它:

git branch release
git checkout release

將其推送到服務器

git push origin release

刪除服務器上的master分支引用

git push origin :master

刪除本地master分支

git branch -d master

注意:此答案適用於您具有命令行訪問權限的自托管 Git 服務器。

由於確實不允許嘗試從客戶端刪除remote master ,並且我確實假設禁止denyDeleteCurrent是有道理的,因此我不想更改該設置。

但是,我發現,如果您可以通過命令行訪問遠程服務器,重命名主服務器最簡單方法是直接在遠程服務器上運行重命名命令。

這對我有用:

  1. 通過SSH登錄遠程git服務器
  2. 轉到項目的 xxx.git 文件夾
  3. 運行: git branch -m master release

現在遠程存儲庫使用release作為其默認分支,並且任何客戶端在該存儲庫上的任何git clone都會默認檢出 release 分支。

在設置裸存儲庫以根據您的需要對其進行配置后,這也非常有用。

正如其他人之前所說,這里的問題是 Gitorious,它不允許您默認刪除 HEAD 分支。 您有兩種選擇可以解決這個問題。 一種是登錄Gitorious服務器(用ssh),在文件服務器上找到Git倉庫,添加:

[receive]
        denyDeleteCurrent = warn

到配置。

一個更簡單的選擇是更改默認分支。 在 Gitorious Web 界面中轉到您的存儲庫,按“編輯存儲庫”,然后設置“將 Git 存儲庫中 HEAD 指向的符號引用更改為:”。 完成此操作后,您可以刪除 master 分支。

如果您在使用GitHub 時遇到此問題,請執行上述步驟,直到刪除遠程分支。 它不會讓你這樣做。 然后登錄到 Web 界面並在存儲庫上轉到SettingsBranchesDefault 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM