Reputation: 1557
Is there a way to import my local git repos to SourceTree and push them to my Bitbucket account, having new repos identical to my local repos be created on my account? Or do I have to make a repo online first and push to that? Github has a way to publish your local repos directly from it's client, and it creates it automatically when you publish, but it has limited private repos. I'm just doing homework so there's no reason for it to be public, hence why I'm trying to use bitbucket.
Upvotes: 136
Views: 168559
Reputation: 349
If you have a local repository in SourceTree, just go to the BitBucket website, create a new repository there, without a .gitignore file, and after creating it, the page will show you the following commands to do what you want to do:
git remote add origin https://[username]@bitbucket.org/[username]/[reponame].git
git push -u origin master
You can use Git Bash in the folder with your local SourceTree repository and paste these two commands. Now when you push a commit from SourceTree, it will be pushed to the online BitBucket repository aswell.
Upvotes: 2
Reputation: 65
(Linux/WSL at least) From the browser at bitbucket.org, create an empty repo with the same name as your local repo, follow the instructions proposed by bitbucket for importing a local repo (two commands to type).
Upvotes: 0
Reputation: 7921
(updated on 3-29-2019 to use the https instead of ssh, so you don't need to use ssh keys)
It seems like for BitBucket, you do have to create a repo online first. Using the instructions from Atlassian, simply create a new BitBucket repository, copy the repository url to the clipboard, and then add that repository as a new remote to your local repository (full steps below):
Get Repo URL
git clone <repository url>
Add Remote Using CLI
cd /path/to/my/repo
git remote add origin https://bitbucket.org/<username>/<reponame>.git
git push -u origin --all
Add Remote Using SourceTree
https://bitbucket.org/<username>/<reponame>.git
)(this method is if you use the ssh url instead of the https url, which looks like ssh://[email protected]/<username>/<reponame>.git
. I recommend just using https)
BitBucket is great for private repos, but you'll need to set up an ssh key to authorize your computer to work with your BitBucket account. Luckily Sourcetree makes it relatively simple:
Creating a Key In SourceTree:
Tools
>Options
, make sure SSH Client:
is set to PuTTY/Plink
under the General
tabTools
>Create or Import SSH Keys
Generate
and move your mouse around to give randomness to the key generatorYou should get something like whats shown in the screenshot below. Copy the public key (highlighted in blue) to your clipboard
Save private Key
and Save public key
to save your keys to wherever you choose (e.g. to <Home Dir>/putty/ssk-key.ppk
and <Home Dir>/putty/ssh-key.pub
respectively) before moving on to the next sectionRegistering The Key In BitBucket
Settings
SSH Keys
tab on the left sidebarAdd SSH Key
, give it a name, and paste the public key you copied in step 4 of the previous sectionThat's it! You should now be able to push/pull to your BitBucket private repos. Your keys aren't just for Git either, many services use ssh keys to identify users, and the best part is you only need one. If you ever lose your keys (e.g. when changing computers), just follow the steps to create and register a new one.
Sidenote: Creating SSH Keys using CLI
Upvotes: 171
Reputation: 393
Another Solution For Windows Users:
This uses Github as a bridge to get to Bitbucket, caused to the lack of publishing directly from the windows Sourcetree app.
Once this is done, everything will be loaded into Bitbucket. Your local remotes will probably need to be configured to point to Bitbucket now.
Upvotes: 0
Reputation: 1441
Upvotes: 0
Reputation: 4409
As an update to Joe's answer, in that you can script the creation of the repository using the API, only the API call I needed was different. This may be because we are using bitbucket server, and not bitbucket cloud.
To create a new repo within a project on our server, I used:
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"}'
where USER
, PASSWORD
, SERVER
, PROJECTNAME
and REPONAME
were of course the desired/required values.
The call is documented in the API reference.
/rest/api/1.0/projects/{projectKey}/repos
Create a new repository. Requires an existing project in which this repository will be created. The only parameters which will be used are name and scmId.
The authenticated user must have PROJECT_ADMIN permission for the context project to call this resource.
Upvotes: -1
Reputation: 4516
Actually there is a more simple solution (only on Mac version). Just four steps:
Upvotes: 30
Reputation: 993
Bitbucket supports a REST API you can use to programmatically create Bitbucket repositories.
Documentation and cURL sample available here: 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" }'
Under Windows, curl is available from the Git Bash shell.
Using this method you could easily create a script to import many repos from a local git server to Bitbucket.
Upvotes: 3
Reputation: 92
GIT serves it's purpose well for version control and team projects if commits and branches are maintained properly.
Step 1: Clone your local repo using cli as mentioned by above answers
$ cd [path_to_repo]
$ git remote add origin ssh://[email protected]//.git
$ git push -u origin --all
Step 2: You can follow any of the above steps to push/pull your works. Easy way is to use git gui. It provides Graphical Interface so that it's easy to stage(add)/unstage, commit/uncommit and push/pull. Beginners can easily understand the git process.
$ git gui
(OR)
Step 2: As mentioned above. Cli codes will do the work.
$ git status
$ git add [file_name]
$ git commit _m "[Comit message"]"
$ git push origin master/branch_name
Upvotes: -1
Reputation: 247
I used this and it worked out well for me. If your directory is
"repo" and your project is "hello" copy the project there
cd /path/to/my/repo
Initialize your directory
git init
Stage the project
git add hello
commit the project
git commit
Add configurations using the email and username you are using in Bitbucket
git config --global user.email
git config --global user.name
Add comment to the project
git commit -m 'comment'
push the project now
git push origin master
Check out of the master
git checkout master
Upvotes: 1
Reputation: 1326784
As this video illustrates, creating a repo online first is the usual way to go.
The SourceTree Release Notes do mention for SourceTree 1.5+:
Support creating new repositories under team / organisation accounts in Bitbucket.
So while there is no "publishing" feature, you could create your online repo from SourceTree.
The blog post "SourceTree for Windows 1.2 is here" (Sept 2013) also mention:
Now you can configure your Bitbucket, Stash and GitHub accounts in SourceTree and instantly see all your repositories on those services. Easily clone them, open the project on the web, and even create new repositories on the remote service without ever leaving SourceTree.
You’ll find it in the menu under View > Show Hosted Repositories, or using the new button at the bottom right of the bookmarks panel.
Upvotes: 9