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

Ton*_*eld 5 git command-line

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

git branch -m master main
git push origin main
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
Run Code Online (Sandbox Code Playgroud)

现在当我这样做时:

git branch -a
Run Code Online (Sandbox Code Playgroud)

我得到以下信息:

* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
  remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

当我尝试删除master分支时出现错误:

! [remote rejected] master (deletion of the current branch prohibited)
Run Code Online (Sandbox Code Playgroud)

当我这样做时,在我的 git 服务器上:

git branch
Run Code Online (Sandbox Code Playgroud)

我得到以下信息:

  main
* master
Run Code Online (Sandbox Code Playgroud)

遥控器 ( 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/
Run Code Online (Sandbox Code Playgroud)

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

小智 10

对于任何发现此问题试图像我一样更改终端中的默认分支的人:

git config --system init.defaultbranch whateverYouWant
Run Code Online (Sandbox Code Playgroud)


use*_*686 7

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

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

  • 谢谢 - 我使用了最上面的例子并且它有效。我感到非常沮丧,因为每次 Google 搜索都是特定于 GitHub/GitLab 的。 (2认同)