Git:本地跟踪,添加新分支?

ita*_*oda 5 git github

我正在尝试清理我的git存储库

  1. 创建一个镜像我的生产(主)分支的新分支.
  2. 删除任何不必要的分支,远程或本地.
  3. 让我的本地分支机构本地跟踪分支机构(idk,如果我需要这样做,好处?)
  4. 为我的工作流程的每个阶段都有一个分支,即一个分支用于本地&dev(dev),一个分支用于分段(staging),1个分支用于生产(生产).本地和开发人员可以共享相同的工作分支,但可以分别进行分段和生产.

从命令行,您可以看到我的环境.

$ git remote
dev
origin
production
staging

$ git branch -r
dev/dev
origin/HEAD -> origin/master
origin/dev
origin/master
production/master
wpengine-findcra/master

$ git branch -vv
dev                   xxxxxxx <comment>
*master               xxxxxxx [origin/master] <comment>
production/staging    xxxxxxx [remotes/production/master] <comment>
staging/master        xxxxxxx <comment>
Run Code Online (Sandbox Code Playgroud)

我有4个工作地点.代码从1流到4.

  1. 我的本地机器
  2. 开发服务器
  3. 登台服务器
  4. 生产服务器

我想专门为登台服务器添加一个新分支,现在我想让它镜像生产(主)分支.但我遇到这个错误,我不知道该怎么做.

$ git checkout master
$ git branch staging
error: there are still refs under 'refs/heads/staging'
fatal: Failed to lock ref for update: Is a directory
Run Code Online (Sandbox Code Playgroud)

我的代码在origin/master和dev/dev下是最新的.

luc*_*ash 12

如果你有一个名称包含斜杠的分支,git将创建(在.git/refs/heads)一个名为你的分支名称的目录,直到斜杠.在该目录中,它将为分支本身放置refs.因此,目录.git/refs/heads/staging/存在并包含由于您的分支而导致的文件"master" staging/master.

当您尝试创建分支"staging"时,git将尝试创建该文件.git/refs/heads/staging.由于这已经存在但是是一个目录,这将失败.因此,您的存储库中不能有两个具有这些名称的分支.

在更新版本的git中,错误消息将如下所示:

fatal: cannot lock ref 'refs/heads/staging': 'refs/heads/staging/master' exists; cannot create 'refs/heads/staging'
Run Code Online (Sandbox Code Playgroud)