refs / remotes / origin / development'存在;无法创建'refs / remotes / origin / development / master' - 将标签推送到所有分支机构

时间:2017-02-02 12:46:52

标签: git bitbucket

我在bitbucket中创建了一个新的存储库。

从我的本地文件夹中我做了:

git remote add origin https://......
git push -u origin master

所以,我的项目上传到bitbucket。

然后,我从bitbucket创建了另外两个分支,开发和发布。

然后我做了:

git fetch origin development

然后git branch --set-upstream-to=origin/development,因为我想推动开发分支。

git status -sb
## master...origin/development

然后git remote add origin/development https://..添加开发分支。

最后: git push --tags origin/development master将标签推送到开发分支。

正如我所看到的,在所有分支(主和开发)中推送了标签,尽管我只选择了开发。

现在,上述命令的完整信息是:

Counting objects: 1, done.
Writing objects: 100% (1/1), 170 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To https://bitb....
 * [new tag]         show -> show
 * [new tag]         v1.0.0 -> v1.0.0
error: update_ref failed for ref 'refs/remotes/origin/development/master': cannot lock ref 'refs/remotes/origin/development/master': 'refs/remotes/origin/development' exists; cannot create 'refs/remotes/origin/development/master'

因此,它表示remotes/origin/development存在但remotes/origin/development/master不存在。

我无法理解为什么会搜索它。

2 个答案:

答案 0 :(得分:0)

这一步:

Then git remote add origin/development https://.. to add the development branch.

错误:它添加了一个名为origin/development的新远程,这不是一个好主意,因为您已经有一个名为origin的远程。

遥控器只是您的Git可以与其他Git联系的URL的简称。据推测,您所有的分支都会转到Bitbucket上的相同的单个Git URL,您只需拨打origin

git pull命令使这一点特别混乱,因为它充满历史奇特。我建议避免它。一旦你避免git pull - 这只是一个方便的捷径 - 剩下的项目更有意义:origin只是你的Bitbucket网址的简称,你git push origin development推{ {1}}那里。当您从development抓取时,您的Git会重命名您从Git获得的内容,以便他们的origin成为您的master,而origin/master成为您的development。这里的origin/development部分来自远程名称,origin/master部分来自分支的名称,如他们的(Bitbucket&#39)所示; s)Git存储库。

答案 1 :(得分:0)

您还可以使用以下方法删除引用:

git update-ref -d refs/remotes/origin/development