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

时间:2018-11-19 13:12:12

标签: bash git macos bitbucket command-line-interface

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

  • 创建一个新的本地Git存储库
  • 向此存储库添加一些默认分支
  • 然后使用下面的代码向Bitbucket添加一个新的仓库:

gitUserName = Joris <-- provided by the user, this is an example projectName = TestProject <-- provided by the user, this is an example git remote add $projectName "https://bitbucket.org/$gitUserName/$projectName.git"

运行此命令后,我在网站上的Bitbucket帐户上看不到存储库。当我尝试重新运行此命令时,它说存储库已经存在。

另外,当我运行git push $projectName master时,它会显示fatal: repository 'https://bitbucket.org/Joris/TestProject.git/' not found

此行为似乎不一致,并且我按照Atlassian guide进行了设置,因此我不太明白为什么它没有按预期添加存储库。我的确意识到,我也可以只访问BitBucket网站并手动添加存储库,但是我的程序的目的是,它会根据尽可能少的命令为用户生成一个完整的存储库。

2 个答案:

答案 0 :(得分:1)

git remote add文档说,该命令将远程添加到本地存储库。 IMO,这个术语有点过时了。最好说它向本地存储库添加了远程配置(即,将存储库配置为 access 远程)。这实际上并没有创建远程仓库。必须单独完成。

在使用bitbucket的情况下,要做的“正常”事情是访问网站并通过其UI创建存储库。因为您正在尝试使事情自动化,所以您不想这样做。因此在这种情况下,您需要使用BitBucket REST API,该文档在此处进行了记录:https://developer.atlassian.com/server/bitbucket/reference/rest-api/

“核心API”部分讨论了存储库和权限,因此您应该能够编写请求脚本,以(必要时)检查存储库是否存在,并进行设置(如果不存在)。您只需要一种让脚本发送HTTP请求并接收响应的方法即可。

答案 1 :(得分:0)

在您的计算机中:

创建存储库:

git init 

添加分支:

git checkout -b branchX
git checkout -b branchY
git checkout -b branchZ

在Bitbucket网站上:

创建一个名为TestProject的新存储库,在设置中允许对Joris用户的写权限并保存。最后复制存储库的url,它必须类似于bitbucket.mydomain:port / nameofproject / testproject.git(注意,所有内容均为小写

在您的计算机中:

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

最后一个是用于推送所有本地存储库的命令,这将覆盖远程存储库中的历史记录和标签,但是由于是新存储库,所以没关系。