我有一個單一分支的git倉庫:主分支。相反,我希望主分支被稱爲「somethingelse」,這種方式後來我可以添加更多的分支與其他名稱。我不想有一個叫「主人」的分支。我有一個分支的git回購:master。如何在本地和遠程回購中重命名分支?
我該怎麼做?
我有一個單一分支的git倉庫:主分支。相反,我希望主分支被稱爲「somethingelse」,這種方式後來我可以添加更多的分支與其他名稱。我不想有一個叫「主人」的分支。我有一個分支的git回購:master。如何在本地和遠程回購中重命名分支?
我該怎麼做?
應按以下步驟工作,假設你的遙控器的名稱爲origin
:
# Rename local master to somethingelse
git branch -m master somethingelse
# Delete the remote named origin's master
git push origin :master
# Checkout local somethingelse
git checkout somethingelse
# Push the branch somethingelse to remote
git push origin somethingelse
# Update the remote tracking branch for somethingelse
# otherwise the next pull/push might fail
git branch -u origin/somethingelse somethingelse
這些步驟有很多的問題:
master
的分支,下一個git pull
會出現錯誤。作爲默認分支的原因在遠程服務器上不存在。使用我在末尾提到的git symbolic-ref
命令更新遠程服務器上的默認分支。receive.denyDeleteCurrent
配置爲warn
或ignore
,否則它不會讓您執行刪除操作。如果您無法更改遙控器上的配置,則無法刪除遙控器上的分支。雖然您可以將分支主人重置到樹中的其他位置,並執行push -f
。遠程服務器上的更改默認分支:
您需要訪問到遠程服務器來配置將上一個新的克隆簽出的默認分支:
git symbolic-ref HEAD refs/heads/somethingelse
謝謝tuxdude。我做了什麼:第一步(重命名),然後刪除遠程回購,然後創建一個新的裸回購,然後是第三和第四步。現在,如果我嘗試在新的位置克隆遠程倉庫,它會說「警告:遠程倉庫指的是不存在的倉庫,無法結帳。」然後我進入克隆的倉庫,執行'git checkout somethingelse'和當我沒有「主人」分支時,我會一直得到這個警告信息嗎? – trusktr
請注意,我是唯一一個訪問回購站的人,所以沒有其他人的結賬問題,這只是我的私人本地和遠程回購編輯:我有本地和遠程的根訪問 – trusktr
@trusktr - 我已經用這些信息更新了答案是的,你需要總是在遠程配置一些默認分支,否則你會得到那個警告每個'克隆'上 – Tuxdude
爲什麼你不想要一個'master'分支,我不認爲這是一個好主意。 – pktangyue