Bash 致命:远程<;存储库>;已经存在

Bash 致命:远程<;存储库>;已经存在,bash,git,macos,bitbucket,command-line-interface,Bash,Git,Macos,Bitbucket,Command Line Interface,作为我所在公司CI&CD流程开发的一部分,我正在构建一个命令行程序(OSX上的Bash脚本),该程序 创建新的本地Git回购协议 向该回购协议添加一些默认分支 然后使用下一个代码向Bitbucket添加新的回购: gitUserName=Joris在您的计算机中: git remote add origin theURL git push origin *:* git push origin --tags 创建回购: git init 添加分支: git checkout -b br

作为我所在公司CI&CD流程开发的一部分,我正在构建一个命令行程序(OSX上的Bash脚本),该程序

  • 创建新的本地Git回购协议
  • 向该回购协议添加一些默认分支
  • 然后使用下一个代码向Bitbucket添加新的回购:
gitUserName=Joris在您的计算机中:

git remote add origin theURL
git push origin *:* 
git push origin --tags
创建回购:

git init 
添加分支:

git checkout -b branchX
git checkout -b branchY
git checkout -b branchZ
在Bitbucket网站中:

创建名为TestProject的新存储库,在设置中允许用户Joris的写入权限并保存。最后复制存储库的url,它必须类似于bitbucket.mydomain:port/nameofproject/testproject.git(注意这都是lowcase

在您的计算机中:

git remote add origin theURL
git push origin *:* 
git push origin --tags

最后一个命令是推送所有本地repo,这将覆盖远程repo中的历史记录和标记,但由于是新的repo,这并不重要。

git remote add
文档说明该命令将远程添加到本地repo。在国际海事组织,这个术语有点不恰当;最好说它将远程配置添加到本地存储库(即,将repo配置为访问远程存储库)。这实际上并没有创建远程回购;这必须分开进行

在bitbucket的情况下,“正常”的做法是访问网站并通过其UI创建回购协议。因为你试图使事情自动化,你不想这样做;因此,在这种情况下,您需要使用BitBucket REST API,如下所述:


“CoreAPI”部分讨论了存储库和权限,因此您应该能够编写请求脚本(如果需要)来检查repo是否存在,如果不存在,则进行设置。您只需要为脚本提供一种发送HTTP请求和接收响应的方法。

能否将脚本中的最后一个命令更改为“echo git remote add$projectName”https://bitbucket.com/$gitUserName/$projectName.git“看看会发生什么?嗨!我试过了,它是这么说的:git remote add TestProject fatal:“TestProject”似乎不是git存储库fatal:无法从远程存储库读取。请确保您具有正确的访问权限,并且存储库存在。这似乎也令人惊讶,因为当我在Xcode中生成项目时(这是我在git中生成的iOS项目),它显示了我添加到git的所有分支。看起来像一个says.com和一个says.org。抱歉,这只是一个愚蠢的复制错误,请在我的问题中更正它。应该是这样的。orgI刚刚注意到运行git remote-v也会返回一个空响应Hi Johan,感谢您的快速响应。我应该补充一点,我正在为持续集成和持续交付Xcode项目开发一个命令行程序。这意味着我所做的工作的目的是让用户在CLI中运行一个命令,然后我的程序为他们设置一切,包括远程bitbucket git repo。他们不应该去网站手工做任何事情。这可以做到吗?您需要直接使用attlasian的RESTAPI,也许您可以找到有用的[()和[()