繁体   English   中英

致命:远程 <Repository> 已经存在

[英]fatal: remote <Repository> already exists

作为为我工作的公司开发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指南进行了设置,因此我并不真正理解为什么它没有按预期那样添加存储库。 我的确意识到,我也可以只访问BitBucket网站并手动添加存储库,但是我的程序的目的在于,它会根据尽可能少的命令为用户生成一个完整的存储库。

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

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

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

在您的机器中:

创建仓库:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM