Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git:本地跟踪,添加新分支?_Git_Github - Fatal编程技术网

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

Git:本地跟踪,添加新分支?,git,github,Git,Github,我正在尝试清理我的git存储库并 创建镜像我的生产(主)分支的新分支 删除任何不必要的远程或本地分支 使我的本地分支机构成为本地跟踪分支机构(idk,如果我需要这样做,好处是什么?) 在我的工作流的每个阶段都有一个分支,即一个分支用于本地开发(dev),一个分支用于登台(staging),一个分支用于生产(production)。Local和dev可以共享同一个工作分支,但用于暂存和生产的分支是不同的 从命令行可以看到我的环境 $ git remote dev origin production

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

  • 创建镜像我的生产(主)分支的新分支
  • 删除任何不必要的远程或本地分支
  • 使我的本地分支机构成为本地跟踪分支机构(idk,如果我需要这样做,好处是什么?)
  • 在我的工作流的每个阶段都有一个分支,即一个分支用于本地开发(dev),一个分支用于登台(staging),一个分支用于生产(production)。Local和dev可以共享同一个工作分支,但用于暂存和生产的分支是不同的
  • 从命令行可以看到我的环境

    $ 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>
    

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

    如果分支的名称包含斜杠,git将(在
    .git/refs/heads
    中)创建一个与分支名称类似的目录,直到斜杠为止。在该目录中,它将放置分支本身的引用。因此目录
    .git/refs/heads/staging/
    存在,并且由于您的分支
    staging/master
    而包含一个文件“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'
    

    这个答案有些道理,但最初的问题是关于“推动”,我不知道如何将它应用到我的情况中。谢谢,这为我指明了正确的方向!我最终删除了一个本地分支暂存/主机,并创建了一个远程链接到我的暂存服务器的新分支暂存/暂存。我还将其推送到位于origin/github的origin服务器。我删除了staging/master,但是能够签出origin/master并将其分支到新的staging/staging,因为我在同一个代码库中。
    fatal: cannot lock ref 'refs/heads/staging': 'refs/heads/staging/master' exists; cannot create 'refs/heads/staging'