如何使用SourceTree将本地存储库推送到Bitbucket,而不先在Bitbucket上创建存储库?


116

有没有一种方法可以将我的本地git仓库导入SourceTree并将其推送到我的Bitbucket帐户,并在我的帐户上创建与本地仓库相同的新仓库?还是我必须先在线进行回购并推动该回购?Github提供了一种直接从客户端发布本地存储库的方法,并且在您发布时会自动创建它,但是私有存储库数量有限。我只是在做家庭作业,所以没有理由公开它,因此为什么我要使用bitbucket。

Answers:


152

(于2019年3月29日更新为使用https而不是ssh,因此您无需使用ssh密钥)

对于BitBucket而言,您似乎必须首先在线创建存储库。按照Atlassian的说明,只需创建一个新的BitBucket存储库,将存储库URL复制到剪贴板,然后将该存储库作为新的远程添加到本地存储库(下面的完整步骤):

获取回购网址

  1. 在您的BitBucket存储库中,选择右上角的“克隆”
  2. 在对话框的右上方选择“ HTTPS”而不是“ SSH”
  3. 它应该以以下形式显示您的回购网址 git clone <repository url>

使用CLI添加远程

  1. cd /path/to/my/repo
  2. git remote add origin https://bitbucket.org/<username>/<reponame>.git
  3. git push -u origin --all

使用SourceTree添加远程

  1. 存储库>添加远程...
  2. 粘贴BitBucket存储库网址(https://bitbucket.org/<username>/<reponame>.git

旧方法:创建和注册SSH密钥

(如果您使用的是ssh url而不是https url,则此方法是类似的ssh://git@bitbucket.org/<username>/<reponame>.git。我建议仅使用https)

BitBucket非常适合私人回购,但是您需要设置一个ssh密钥以授权您的计算机可以使用您的BitBucket帐户。幸运的是,Sourcetree使它相对简单:

在SourceTree中创建一个密钥:

  1. Tools> Options中,确保已SSH Client:设置为PuTTY/PlinkGeneral标签
  2. 选择Tools>Create or Import SSH Keys
  3. 在弹出窗口中,单击Generate并四处移动鼠标,以使密钥生成器具有随机性
  4. 您应该获得类似下面的屏幕快照中所示的内容。将公共密钥(以蓝色突出显示)复制到剪贴板

    油灰

  5. 单击Save private KeySave public key将键保存到您选择的任意位置(例如分别为<Home Dir>/putty/ssk-key.ppk<Home Dir>/putty/ssh-key.pub),然后继续进行下一部分

在BitBucket中注册密钥

  1. 登录到您的BitBucket帐户,然后在右上角,单击您的个人资料图片,然后单击Settings
  2. 转到SSH Keys左侧栏中的标签
  3. 单击Add SSH Key,为其命名,然后粘贴在上一节的步骤4中复制的公钥。

而已!现在,您应该能够将您的BitBucket私有存储库推入/拉出。您的密钥也不仅仅适用于Git,许多服务都使用ssh密钥来识别用户,而最好的部分是您只需要一个。如果您丢失了密钥(例如,在更换计算机时),只需按照以下步骤创建并注册一个新密钥即可。

旁注:使用CLI创建SSH密钥

只需按照本教程


使用Paste the BitBucket repository url (git@bitbucket.org/<username>/<reponame>.git)将强制您添加ssh密钥。如果您还没有现有的,那会很痛苦。
Alex Kyriakidis 2015年

1
是的,BitBucket主要用于私有存储库,因此您需要一个ssh密钥才能开始。不用担心,它没有看起来那么糟糕!我在答案中添加了快速教程
woojoo666 2015年

3
为什么在使用HTTPS更加容易时,你们为什么要为SSH和公钥/私钥而苦苦挣扎?在Clone对话框中,将右上角的下拉菜单从SSH切换为HTTPS并获取URL:https://bitbucket.org/<reponame>.git
Dan Dar3

1
@ DanDar3是的,谢谢,这为我节省了很多麻烦。
出色的

1
@ DanDar3哇,这很容易,我更新了答案,谢谢!
woojoo666

24

实际上,有一个更简单的解决方案(仅在Mac版本上)。仅需四个步骤:

  1. 右键单击存储库,然后选择“发布到远程...”

SourceTree发布到远程Screeshot

  1. 下一个窗口将询问您要发布(github,bitbucket等),然后完成。
  2. 链接远程存储库

这必须是新的。我已经有一段时间没有实际使用存储库了,所以我会稍作讨论。
cma0014 2015年

3
实际上,我已经检查了它仅在Mac版本的SourceTree上,而不在Windows上。:(
大卫

1
是的,我检查了它是否在远程数据库上创建了仓库,但是没有在本地存储库的远程数据库上进行链接设置。对于下一版本,这将是一个不错的升级
David

1
@bauerMusic这也发生在“进行中”窗口中。但不是最近。虽然如您所说...此功能有些失败。它不像我们所有人所期望的那样链接到新的远程仓库。尽管如此,SourceTree是我发现的Mac上最好的GIT管理器。
大卫,

1
它实际上对我而言非常完美,它创建了回购协议并将其与本地和远程站点链接,也许自2016年以来他们就对其进行了改进
Kross

10

如该视频所示,通常首先要在线创建存储库。

SourceTree发行说明对SourceTree 1.5+做提及:

支持在Bitbucket中的团队/组织帐户下创建新的存储库。

因此,尽管没有“发布”功能,但是您可以从SourceTree创建在线仓库。

博客文章“ 适用于Windows 1.2的SourceTree在这里 ”(2013年9月)还提到:

现在,您可以在SourceTree中配置Bitbucket,Stash和GitHub帐户,并立即查看这些服务上的所有存储库。轻松克隆它们,在Web上打开项目,甚至无需离开SourceTree就可以在远程服务上创建新的存储库
您可以在“视图”>“显示托管存储库”下的菜单中找到它,也可以使用书签面板右下角的“新建”按钮。

http://blog.sourcetreeapp.com/files/2013/09/hostedrepowindow.png


到家时,我会尝试一下,谢谢!
cma0014 2014年

是的,但是事实证明很难将本地dev文件夹存储在仓库中。
Ben Racicot 2015年

3

我用了它,对我来说效果很好。如果您的目录是

“ repo”,您的项目为“ hello”,将项目复制到此处

cd /path/to/my/repo

初始化目录

git init

进行项目

git add hello

提交项目

git commit

使用您在Bitbucket中使用的电子邮件和用户名添加配置

git config --global user.email
git config --global user.name

在项目中添加评论

git commit -m 'comment'

立即推动项目

git push origin master

检出主人

git checkout master

3

Bitbucket支持REST API,可用于以编程方式创建Bitbucket存储库。

可在此处获得文档和cURL示例:https : //confluence.atlassian.com/bitbucket/repository-resource-423626331.html#repositoryResource-POSTanewrepository

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

在Windows下,可以从Git Bash shell获得curl。

使用此方法,您可以轻松创建一个脚本,以将许多存储库从本地git服务器导入到Bitbucket。


1

设置Bitbucket存储库(Mac上为命令行)

从本地存储库开始创建新的APPLICATION:

  1. 终端-> cd〜/ Documents(粘贴您的APPLICATION基本目录路径)
  2. 终端-> mkdir(使用创建目录)
  3. 终端-> cd(使用目录更改目录)
  4. BitBucket A / C->在bitBucket帐户上创建存储库
  5. Xcode->创建具有相同名称的新xcode项目
  6. 终端-> git init(初始化空仓库)
  7. 终端-> git remote add origin(例如https://app@bitbucket.org/app/app.git
  8. 终端-> git add。
  9. 终端-> git状态
    1. 终端-> git commit -m“ IntialCommet”
    2. 终端-> git push origin master

创建APPLICATION克隆存储库:

  1. 终端-> mkdir(使用创建目录)
  2. 终端-> cd(使用目录更改目录)
  3. 终端-> git clone(例如https://app@bitbucket.org/app/app.git
  4. 终端-> cd
  5. 终端-> git status(显示编辑/更新的文件状态)
  6. 终端-> git pull origin master
  7. 终端-> git add。
  8. 终端-> git push origin master

1

Windows用户的另一种解决方案:

这使用Github作为通向Bitbucket的桥梁,导致缺少直接从Windows Sourcetree应用发布的问题。

  1. 将本地仓库加载到Github桌面应用程序中。
  2. 将Github桌面应用中的私有仓库(作为私密仓库,如果需要的话)发布到您的Github帐户中。
  3. 在Bitbucket网站上开设您的个人/团队帐户
  4. 通过从Github导入创建一个新的Bitbucket存储库。
  5. 在Github中删除仓库。

完成此操作后,所有内容都会加载到Bitbucket中。您的本地遥控器可能需要配置为现在指向Bitbucket。


0

如果正确维护提交和分支,则GIT可以很好地用于版本控制和团队项目。
步骤1:按照上述答案所述,使用cli克隆本地仓库

$ cd [path_to_repo]
$ git远程添加源ssh://git@bitbucket.org//.g​​it
$ git push -u origin --all

第2步:您可以按照上述任何一个步骤来推/拉您的作品。简单的方法是使用git gui。它提供了图形界面,因此可以轻松地暂存(添加)/取消暂存,提交/取消提交和推入/拉出。初学者可以轻松理解git的过程。

$ git gui

(或)
步骤2:如上所述。Cli代码将完成工作。

$ git status
$ git add [file_name]
$ git commit _m“ [提交消息”]“
$ git push原始master / branch_name


0

作为Joe答案的更新,您可以使用API​​编写存储库的创建脚本,只有我需要的API调用有所不同。这可能是因为我们使用的是Bitbucket服务器,而不是Bitbucket云。

为了在我们服务器上的项目中创建新的仓库,我使用了:

curl -X POST -v -u USER:PASSWORD -H "Content-Type: application/json" \
http://SERVER/rest/api/1.0/projects/PROJECTNAME/repos/ \
-d '{"scmid":"git", "name":"REPONAME"}'

其中USERPASSWORDSERVERPROJECTNAMEREPONAME分别当然期望/需要的值。

该调用记录在API参考中

/rest/api/1.0/projects/{projectKey}/repos

创建一个新的存储库。需要在其中创建此存储库的现有项目。唯一将使用的参数是name和scmId。

经过身份验证的用户必须对上下文项目具有PROJECT_ADMIN权限才能调用此资源。


0

(至少是Linux / WSL)从bitbucket.org的浏览器中,创建一个与本地存储库同名的空存储库,并按照bitbucket提出的导入本地存储库的说明进行操作(输入两个命令)。

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.