是否可以使用命令行Git在Bitbucket中创建新的存储库?我尝试过以下方法:
git clone --bare https://username@bitbucket.org/username/new_project.git
我收到此消息:
克隆到裸存储库'new_project.git'... ... 致命:
https://username@bitbucket.org/username/new_project.git/info/refs
未找到:您是否在服务器上运行了git update-server-info?
如果不去网络应用程序就可以做到这一点。
答案 0 :(得分:87)
您可以使用Bitbucket REST API和cURL。例如:
curl --user login:pass https://api.bitbucket.org/1.0/repositories/ \
--data name=REPO_NAME
创建名为REPO_NAME
的新存储库。
有关详细信息,请参阅Use the Bitbucket REST APIs。
更新
具体来说,对于Bitbucket V2,请参阅POST a new repo
答案 1 :(得分:44)
最近,我们可以使用bitbucket-cli
。
使用pip
pip install bitbucket-cli
然后使用
创建一个仓库bitbucket create --private --protocol ssh --scm git YOUR_REPO_NAME
请注意,这会创建一个私有git repo,如果您使用Mercurial,则可以使用--public
进行公共访问,使用--scm hg
。用户名参数可以通过--username YOUR_USER_NAME
添加。
答案 2 :(得分:11)
这里有@hannesr's script稍微调整一下以接受来自提示的输入:
# startbitbucket - creates remote bitbucket repo and adds it as git remote to cwd
function startbitbucket {
echo 'Username?'
read username
echo 'Password?'
read -s password # -s flag hides password text
echo 'Repo name?'
read reponame
curl --user $username:$password \
https://api.bitbucket.org/1.0/repositories/ \
--data name=$reponame \
--data is_private='true'
git remote add origin git@bitbucket.org:$username/$reponame.git
git push -u origin --all
git push -u origin --tags
}
您应将其放在.bashrc
或.bash_aliases
。
答案 3 :(得分:8)
https://confluence.atlassian.com/bitbucket/repository-resource-423626331.html
$ curl -X POST -v -u username:password -H "Content-Type: application/json" \
https://api.bitbucket.org/2.0/repositories/teamsinspace/new-repository4 \
-d '{"scm": "git", "is_private": "true", "fork_policy": "no_public_forks" }'
答案 4 :(得分:2)
我做了一个快速的shell脚本,负责在当前工作目录中创建一个本地git,执行“初始提交”,然后创建bitbucket repo(使用Mareks curl方法),然后最终完成所需的一切将初始提交推送到bitbucket。
(请注意,这仅适用于私人回购,但如Patrick所描述的那样很容易改变)
像这样使用:
fillbucket <user> <password> <reponame>
答案 5 :(得分:1)
这是单线复制/粘贴糖果:
# This is Git's per-user configuration file.
[alias]
create = "!f() { curl -X POST -u YOUR_EMAIL_ADDRESS -H 'Content-Type: application/x-www-form-urlencoded' https://api.bitbucket.org/2.0/repositories/YOUR_USERNAME_OR_TEAM_NAME/$1 -d '{\"is_private\": \"true\", \"scm\": \"git\", \"project\": \"KEY_OF_PROJECT\"}' | jq '.links.clone[].href'; }; f"
注意:您应该使用您的信息 更新常量。
这样您的密码就不会存储在 .bash_history 中。
它必须是一个单行内容才能放入~/.gitconfig
文件。
<强> 用法 强>
git create <repository_name>
返回 null 或新创建的存储库地址。
如果您不能/不想安装它,可以删除jq部分。
<强> 甜味 强>
干杯!
编辑:我必须将
Content-Type: application/json
替换为Content-Type: application/x-www-form-urlencoded
,因为无论如何 -d 标志现在将标头设置为后者,即使您指定你发送json。cURL手册说:
(HTTP)将POST请求中的指定数据发送到HTTP服务器,就像用户填写HTML表单并按下提交按钮时浏览器一样。这将导致curl使用content-type application / x-www-form-urlencoded将数据传递到服务器。比较-F, - form。
答案 6 :(得分:1)
curl -X POST -v -u $username:$password "https://api.bitbucket.org/2.0/repositories/$username/$reponame" -H "Content-Type: application/json" -d '{"scm": "git", "is_private": "true", "fork_policy": "no_public_forks", "project": {"key": "'$project_key'"}}'
这将在特定项目下创建一个存储库。
curl -u $username:$password -X POST -H "Content-Type:application/json" -d '{"name": "'$reponame'","scmId": "git","forkable": true}' http://localhost:7990/rest/api/1.0/projects/${project_key,,}/repos
您可以提及您的公司网址(例如 - birbucket.xyz.com)代替 localhost:7990。
有关 bitbucket 服务器的更多信息,请参阅 Use the Bitbucket Server REST APIs。
答案 7 :(得分:0)
cURL的最佳答案对我来说效果不佳,所以我最终用Python Bitbucket-API完成了它。以下是repository.create()电话的文档。
安装:
pip install bitbucket-api
的Python:
>>> from bitbucket.bitbucket import Bitbucket
>>> bb = Bitbucket(username, password)
>>> bb.repository.create('awesome-repo', scm='git', private=True)
(True, {u'scm': ...})
答案 8 :(得分:0)
我对@pztrick above script做了一些修改。这个新脚本应该可以正常工作,但是它使用了更新的2.0 API:
function startbitbucket {
echo 'Username?'
read username
echo 'Password?'
read -s password # -s flag hides password text
echo 'Repo name?'
read reponame
curl -X POST -v -u $username:$password -H "Content-Type: application/json" \
https://api.bitbucket.org/2.0/repositories/$username/$reponame \
-d '{"scm": "git", "is_private": "true", "fork_policy": "no_public_forks" }'
git remote add origin git@bitbucket.org:$username/$reponame.git
git push -u origin --all
git push -u origin --tags
}
您可以将其放置在.bashrc或.bash_aliases文件中(就像原始脚本一样)。
请注意,它还会将其创建为私人存储库。您可以将“ is_private”:“ true”更改为“ is_private”:“ false”以使其成为公共存储库。
答案 9 :(得分:-1)
@hannester我分叉并稍微修改了你的脚本。
你有不正确的远程网址(你在脚本中留下了你的用户名)。将其修改为包含 脚本文件中的用户名和密码。
并重命名,并提供有关如何添加到路径的说明: