从Git Bash终端在Bitbucket上创建新的回购?

时间:2012-12-09 14:50:39

标签: git bitbucket

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

如果不去网络应用程序就可以做到这一点。

10 个答案:

答案 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>

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

答案 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部分。

<强> 甜味

Success Message

干杯!

  

编辑:我必须将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)

  • 如果您使用的是 Bitbucket Cloud(bitbucket.org),您可以使用 Bitbucket REST API 和 cURL 并指定存储库的项目密钥,您可以使用:-

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'"}}'

这将在特定项目下创建一个存储库。

  • 如果您想在 Bitbucket 服务器中创建存储库 V1.0 REST API 可用于此。该命令如下所示:-

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我分叉并稍微修改了你的脚本。

你有不正确的远程网址(你在脚本中留下了你的用户名)。将其修改为包含 脚本文件中的用户名和密码。

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

https://bitbucket.org/oscarmorrison/newgit