在命令行(cli)上将 git 默认分支从 master 更改为 main

在命令行(cli)上将 git 默认分支从 master 更改为 main

我想将我的默认分支从 更改为master-main我已在本地完成了以下操作:

git branch -m master main
git push origin main
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main

现在我这样做:

git branch -a

我得到以下信息:

* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
  remotes/origin/master

当我尝试删除master分支时收到错误:

! [remote rejected] master (deletion of the current branch prohibited)

在我的 git 服务器上执行以下操作:

git branch

我得到以下信息:

  main
* master

遥控器(ll -a)上的内容如下:

drwxrwxr-x  7 ubuntu ubuntu 4096 Oct 21 08:56 ./
drwxr-xr-x 46 ubuntu ubuntu 4096 Sep  4 12:20 ../
-rw-rw-r--  1 ubuntu ubuntu   23 Feb 23  2021 HEAD
drwxrwxr-x  2 ubuntu ubuntu 4096 Feb 23  2021 branches/
-rw-rw-r--  1 ubuntu ubuntu   66 Feb 23  2021 config
-rw-rw-r--  1 ubuntu ubuntu   73 Feb 23  2021 description
drwxrwxr-x  2 ubuntu ubuntu 4096 Feb 23  2021 hooks/
drwxrwxr-x  2 ubuntu ubuntu 4096 Feb 23  2021 info/
drwxrwxr-x 46 ubuntu ubuntu 4096 Oct 21 09:48 objects/
drwxrwxr-x  4 ubuntu ubuntu 4096 Feb 23  2021 refs/

所以我的问题(最后)是我如何重新指向我的远程分支,main以便我可以master在本地和远程删除?

答案1

您还必须HEAD直接在服务器上更改指针,而不仅仅是在将其用作远程的克隆上更改指针。这可能可以通过两种方式完成:

  • 将远程 HEAD 更改为新分支,然后删除旧分支:

    git symbolic-ref HEAD refs/heads/main
    git branch -d master
    
  • 或者删除新的分支,然后重命名旧分支(并重新推送提交):

    git branch -d main
    git branch -m main
    

(请注意,git remote set-head -a可以在克隆上使用,以便在服务器上更改 origin/HEAD 后自动更新它。)

答案2

对于那些像我一样尝试在终端中更改默认分支的人来说:

git config --system init.defaultbranch whateverYouWant

相关内容