作为为我工作的公司开发CI和CD流程的一部分,我正在构建一个命令行程序(OSX上的Bash脚本)
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网站并手动添加存储库,但是我的程序的目的是,它会根据尽可能少的命令为用户生成一个完整的存储库。
答案 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
最后一个是用于推送所有本地存储库的命令,这将覆盖远程存储库中的历史记录和标签,但是由于是新存储库,所以没关系。