从Git Bash终端在Bitbucket上创建新的仓库?


73

是否可以使用命令行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?

无需转到网络应用程序即可执行此操作。

Answers:


91

您可以使用Bitbucket REST API和cURL。例如:

curl --user login:pass https://api.bitbucket.org/1.0/repositories/ \
--data name=REPO_NAME

创建名为的新存储库REPO_NAME

有关更多信息,请参阅使用Bitbucket REST API

更新

对于Bitbucket V2,请参阅发布新的回购


34
谢谢,简单易用的解决方案。值得一提的是创建了一个公共仓库。只需添加--data is_private =“真”的私人回购协议
帕特里克

4
对我来说,我输入的密码错误,但是curl并没有告诉我它得到了401 Unauthorized。添加-v让我看看发生了什么。
funroll

3
我需要创建一个不是由我自己负责,而是由我所属团队组成的仓库。API对此进行了说明,但是添加了--data owner = <团队名称>
Chad Gorshing 2013年

9
从安全角度来看,我将更--user login:pass改为just--user login并每次手动输入密码,因此不会保存在您的密码中.bash_history(或者,如果您使用的是OS X,则可以使用命令行从钥匙串中安全地检索密码,有关更多信息,请参见例如:joshtronic.com/2014/02/17/…)。
ivanzoid 2015年

1
stackoverflow.com/a/19670989/951349下的@Stephen帖子是最新的。
smileBot 2015年


12

这是@hannesr的脚本,它经过了一些调整以接受来自提示的输入:

# 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
我喜欢此解决方案的简单性,但我会在密码字段中使用“ read -s”。这只是关闭了回声,因此在输入密码时提示(或回滚缓冲区)不可读
eurythmia 2015年

@pztrick:您可以结合echoread成单行线,例如read -p 'Username?' username
ccpizza

bitbucket-clisudo pip2 install bitbucket-cli)以更安全的方式做到这一点bitbucket create --private --protocol ssh --scm git YOUR_REPO_NAME
Jonathan

2

我制作了一个快速的shell脚本,负责在当前工作目录中创建本地git,执行“初始提交”,然后创建bitbucket存储库(使用Mareks curl方法),然后最后完成推入初始操作所需的所有操作致力于bitbucket。

(请注意,这仅用于私人存储库,但可以按照Patrick所述轻松更改)

像这样使用它:

fillbucket <user> <password> <reponame>

代码在http://bitbucket.org/hannesr/fillbucket上


2

使用cURL的最佳答案对我来说效果不佳,因此我最终使用Bitbucket-API在Python中完成了此任务。这是关于repository.create()调用的文档。

安装:

pip install bitbucket-api

蟒蛇:

>>> from bitbucket.bitbucket import Bitbucket
>>> bb = Bitbucket(username, password)
>>> bb.repository.create('awesome-repo', scm='git', private=True)
(True, {u'scm': ...})

1

我在脚本上方@pztrick做了一些小的修改。这个新脚本应该可以正常工作,但是它使用了更新的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”以使其成为公共存储库。


0

@hannester我派生了您的脚本,并对其进行了少许修改。

您的远程URL不正确(您在脚本中保留了用户名)。将其修改为在脚本文件中包含用户名和密码。

并重命名,并带有有关如何添加到路径的说明:

https://bitbucket.org/oscarmorrison/newgit


3
嗨,奥斯卡,欢迎来到StackOverflow。感谢您的贡献!我有一个小建议。最好将脚本包含在您的答案中(不仅链接到该脚本),因为那样一来,答案就永远不会丢失,并且始终与问题配对。
ljgw
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.