How to create a new gitlab repo from my existing local git repo, using CLI?
I have many local git repos on my OSX. Using command line I want to make new gitlab repos on https://gitlab.ccompanyname.com, form existing local repos.
Is it possible to do that?
git gitlab
add a comment |
I have many local git repos on my OSX. Using command line I want to make new gitlab repos on https://gitlab.ccompanyname.com, form existing local repos.
Is it possible to do that?
git gitlab
From your url I assume that you are running a gitlab server. According to the documentation of the Gitlab CE, there are third-party appications that are wrappers/CLIs for the API. Maybe one of these might be helpful.
– sokin
Oct 13 '15 at 12:48
i tried tools given of that page. documentation is not clear to me
– Jitendra Vyas
Oct 13 '15 at 13:24
Since GitLab 10.5 (Feb 2018), it is possible to simply push to create a new project on GitLab. @JitendraVyas consider accepting ted's answer below to improve the visibility of this solution.
– joelostblom
Apr 24 '18 at 22:32
It's worth noting that if you create a new project on gitlab the blank project then comes up with detailed instructions for all manners of ways to get your code into it :-)
– Bananaapple
May 3 '18 at 7:58
add a comment |
I have many local git repos on my OSX. Using command line I want to make new gitlab repos on https://gitlab.ccompanyname.com, form existing local repos.
Is it possible to do that?
git gitlab
I have many local git repos on my OSX. Using command line I want to make new gitlab repos on https://gitlab.ccompanyname.com, form existing local repos.
Is it possible to do that?
git gitlab
git gitlab
asked Oct 13 '15 at 11:50
Jitendra VyasJitendra Vyas
58.4k196503791
58.4k196503791
From your url I assume that you are running a gitlab server. According to the documentation of the Gitlab CE, there are third-party appications that are wrappers/CLIs for the API. Maybe one of these might be helpful.
– sokin
Oct 13 '15 at 12:48
i tried tools given of that page. documentation is not clear to me
– Jitendra Vyas
Oct 13 '15 at 13:24
Since GitLab 10.5 (Feb 2018), it is possible to simply push to create a new project on GitLab. @JitendraVyas consider accepting ted's answer below to improve the visibility of this solution.
– joelostblom
Apr 24 '18 at 22:32
It's worth noting that if you create a new project on gitlab the blank project then comes up with detailed instructions for all manners of ways to get your code into it :-)
– Bananaapple
May 3 '18 at 7:58
add a comment |
From your url I assume that you are running a gitlab server. According to the documentation of the Gitlab CE, there are third-party appications that are wrappers/CLIs for the API. Maybe one of these might be helpful.
– sokin
Oct 13 '15 at 12:48
i tried tools given of that page. documentation is not clear to me
– Jitendra Vyas
Oct 13 '15 at 13:24
Since GitLab 10.5 (Feb 2018), it is possible to simply push to create a new project on GitLab. @JitendraVyas consider accepting ted's answer below to improve the visibility of this solution.
– joelostblom
Apr 24 '18 at 22:32
It's worth noting that if you create a new project on gitlab the blank project then comes up with detailed instructions for all manners of ways to get your code into it :-)
– Bananaapple
May 3 '18 at 7:58
From your url I assume that you are running a gitlab server. According to the documentation of the Gitlab CE, there are third-party appications that are wrappers/CLIs for the API. Maybe one of these might be helpful.
– sokin
Oct 13 '15 at 12:48
From your url I assume that you are running a gitlab server. According to the documentation of the Gitlab CE, there are third-party appications that are wrappers/CLIs for the API. Maybe one of these might be helpful.
– sokin
Oct 13 '15 at 12:48
i tried tools given of that page. documentation is not clear to me
– Jitendra Vyas
Oct 13 '15 at 13:24
i tried tools given of that page. documentation is not clear to me
– Jitendra Vyas
Oct 13 '15 at 13:24
Since GitLab 10.5 (Feb 2018), it is possible to simply push to create a new project on GitLab. @JitendraVyas consider accepting ted's answer below to improve the visibility of this solution.
– joelostblom
Apr 24 '18 at 22:32
Since GitLab 10.5 (Feb 2018), it is possible to simply push to create a new project on GitLab. @JitendraVyas consider accepting ted's answer below to improve the visibility of this solution.
– joelostblom
Apr 24 '18 at 22:32
It's worth noting that if you create a new project on gitlab the blank project then comes up with detailed instructions for all manners of ways to get your code into it :-)
– Bananaapple
May 3 '18 at 7:58
It's worth noting that if you create a new project on gitlab the blank project then comes up with detailed instructions for all manners of ways to get your code into it :-)
– Bananaapple
May 3 '18 at 7:58
add a comment |
5 Answers
5
active
oldest
votes
Create new empty projects in GitLab for each of your local repos you want to push to GitLab. After you create the project's, you will be taken to the default project page.
Then cd into each of your existing git repos. Do a git remote add origin <your new gitlab repo address>
And then a git push -u origin master
You will need to do this for each of your repos you want to add.
Your repo address is given to you on the project page. As http and/or ssh. If you already have a remote called origin on your local machine, you might want to rename it first. Or you can call the gitlab one something different. Also if you want to push all your branches to gitlab you can do a git push --all origin
If you want your tags, git push --tags origin
6
"Create new empty projects in GitLab" this was the question. I want to do it from CLI
– Jitendra Vyas
Oct 15 '15 at 12:05
maybe we shouldgit remote remove origin
first
– MichaelMao
Apr 24 '17 at 7:25
add a comment |
2018 Solution: just use --set-upstream
Assuming you'll take care of writing the script that would do the following for each of your local repo, it seems that as of Gitlab 10.5 you can simply use
git push --set-upstream address/your-project.git
This will create a new project on Gitlab without you creating it manually on the server
From the Documentation
Push to create a new project
When you create a new repo locally, instead of going to GitLab to manually create a new project and then push the repo, you can directly push it to GitLab to create the new project, all without leaving your terminal. If you have access to that namespace, we will automatically create a new project under that GitLab namespace with its visibility set to Private by default (you can later change it in the project's settings).
This can be done by using either SSH or HTTP:
## Git push using SSH
git push --set-upstream git@gitlab.example.com:namespace/nonexistent-project.git master
## Git push using HTTP
git push --set-upstream https://gitlab.example.com/namespace/nonexistent-project.git master
Once the push finishes successfully, a remote message will indicate the command to set the remote and the URL to the new project:
remote:
remote: The private project namespace/nonexistent-project was created.
remote:
remote: To configure the remote, run:
remote: git remote add origin https://gitlab.example.com/namespace/nonexistent-project.git
remote:
remote: To view the project, visit:
remote: https://gitlab.example.com/namespace/nonexistent-project
remote:
add a comment |
I have to agree with you that documentation for Gitlab's API wrapper third-party applications is not ideal, however I did manage to make one of them work.
For this, I set up a sandbox gitlab server (GitLab Community Edition 8.0.5) in a vagrant box running Ubuntu 14.04.
Now, the API wrapper I used is this one (python-gitlab by Gauvain Pocentek). I chose this one because it is starred by enough people (118 at time of writing) and it's written in python so portability will not be an issue (my host machine is Windows with cygwin, but I will be using unix syntax for this answer).
Installation is quite easy with pip
:
$ sudo pip install python-gitlab
Once installed you will have to modify a config file -that does not exist out-of-the-box or, at least, I could not locate it- (the documentation was not clear about this). This file's "official" name is .python-gitlab.cfg
and this is the one that config.py is searching by default.
Anyway, I created my own version of .python-gitlab.cfg
based on the sample syntax found at the project's github which goes like this:
[global]
# required setting
default = local
# optional settings
ssl_verify = false
timeout = 5
[local]
# url = http://10.0.3.2:8080
# get the private token from the gitlab web interface
# private_token = vTbFeqJYCY3sibBP7BZM
[remote]
url = YOUR SERVER URL GOES HERE
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = false
[remote-ssl]
url = YOUR HTTPS URL GOES HERE (eg https://gitlab.ccompanyname.com))
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = true (VALID CERTIFICATE) OR false (SELF-SIGNED CERTIFICATE)
You will have to get yourself a private token from the web interface (found in Profile Settings :: Account) since, as the README points out,
Only private token authentication is supported (not user/password).
After this is taken care of, creating a project can be achieved like this, for http
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote project create --name YOUR_PROJECT_NAME
and like this for https
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote-ssl project create --name YOUR_PROJECT_NAME
The switches used above, can be found by looking at the help:
$ gitlab --help
Now, assuming that you have taken care of SSH keys (both locally and in the web interface), and that you want the gitlab repo names to be the same as the directories in your local git, then, a little bash
script like the following, can automate the project creation and the local repos push:
#!/usr/bin/bash
cd 'PATH/TO/YOUR/REPOS/DIRECTORY' # enter your local repos dir here
server="YOUR SERVER" # enter your server URL
user="YOUR USER" # enter your user name
gitlab_cfg="PATH/TO/YOUR/.python-gitlab.cfg" # enter the location of config file
#method="remote" # uncomment for http, comment for https
method="remote-ssl" # uncomment for https, comment for http
for i in $( ls -1 ); do
echo
echo
echo '>> Creating Project'
gitlab -c $gitlab_cfg --gitlab $method project create --name $i
echo '>> Project ' $i 'created'
echo '>> ------'
cd $i
li=$( tr '[A-Z]' '[a-z]' <<< $i) # convert dirname to lowercase, safe with older bashes (<4)
origin="git@$server:$user/$li.git"
echo ">> Reassigning origin to : $origin"
git remote rm origin
git remote add origin $origin
git remote -v
echo '>> Pushing local repo to gitlab'
git push -u origin master
echo '>> Done'
echo
echo
cd ..
done
echo
echo 'Operation finished'
What it does is create gitlab projects named after the dirnames found at the outer local git directory, then cd
's into each one of them, renews the origin and then performs the push.
One thing to mention here is that gitlab converts repo urls to lowercase, for example sampleRepo001
becomes samplerepo001
in the repo's url; that's why I convert dirnames to lowercase in the script.
And, finally, here is an example run of the script:
As a reminder, if you want to use this script, test thoroughly before applying to the actual production server.
Update - I added some more info on how to handle HTTPS/SSL.
add a comment |
If you use nodejs, or even have a simple understanding of it, the node-gitlab module is great. On a self hosted Gitlab instance I've been able to create projects and import the repos from a remote repository (a local git server). The process should be similar for a local repository. You could setup a local git server on your machine and use that as the import_url for each Gitlab project.
Or, you can write a script that will use the API to create the project then push each repository to its respective project.
Pseudocode:
for each repo in directory:
- Use API to create project on gitlab.com
- git remote add gitlab url-to-gitlab-repo
- git push gitlab --mirror
add a comment |
git-repo has done the dirty jobs for you. It also supports GitLab, GitHub and Bitbucket.
1. Installation
apt-get install python-pip
pip install git-repo
you might need pip3 if the above command is not working.
(optional)
apt-get install python3-pip
pip3 install git-repo
2 Configuration
2.1 necessary configuration
git repo config
The command line tool, step by step, will ask if you want to set up bitbucket, github, gitlab account, press 'y/n' and username/password accordingly. If you do not know what it means, press 'n' to skip. The configuration file will be generated in ~/.gitconfig
. You may want to tweak it afterwards.
(optional) for example, you could manually set token in ~/.gitconfig like this:
[gitrepo "gitlab"]
token = xxxxxxx
[gitrepo "github"]
token = xxxxxxx
2.2 better shortcut
append following lines to ~/.gitconfig.
[alias]
hub = repo hub
lab = repo lab
why?
Because now you could simply use shortcut
git lab clone /howto
git hub clone /howto
in the future.
Note: you need authentication
to clone private
repositories
2.3 (optional) adding private permissions right
cd ~/.ssh
see if you have id_rsa.pub
file. pub
means public file and I recommend you just copy
the whole content and paste
to gitlab.com public ssh webpage.
Done.
You should not show others about corresponding file id_rsa
, which is your key to access to gitlab repository. Other client/computer having id_rsa
, with permission chmod 600 id_rsa
, will be able to control repository.
if you do not see id_rsa.pub
, you could generate it using:
ssh-keygen -t rsa
Press enter
to leave it default. Now you can see id_rsa.pub
and id_rsa
inside ~/.ssh directory. If you are using different name other than id_rsa by default, you should modify ~/.ssh/config file like this:
# private account
Host github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
3. git-repo Usage
as you're starting a new project, you want to create a new
repository, out of GitLab, to push to:
git lab create <username>/howto
of course, you could delete, list repositories, or do other stuff.
git lab delete <username>/howto
git lab list <username>
git lab clone <username>/howto
git clone git@gitlab.com:<username>/howto
Practical Example
Assuming you have developed a local myproject
directory with git committed for a while. Now you want to upload to GitLab.
create remote repo in gitlab. You will see username/myproject in gitlab page.
git lab create username/myproject
Assuming there is a .git file under local myproject directory
cd myproject
link local directory to remote gitlab.com repo.
git lab add username/myproject
upload myproject directory to gitlab.com
git push -u gitlab master
done
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f33101962%2fhow-to-create-a-new-gitlab-repo-from-my-existing-local-git-repo-using-cli%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
Create new empty projects in GitLab for each of your local repos you want to push to GitLab. After you create the project's, you will be taken to the default project page.
Then cd into each of your existing git repos. Do a git remote add origin <your new gitlab repo address>
And then a git push -u origin master
You will need to do this for each of your repos you want to add.
Your repo address is given to you on the project page. As http and/or ssh. If you already have a remote called origin on your local machine, you might want to rename it first. Or you can call the gitlab one something different. Also if you want to push all your branches to gitlab you can do a git push --all origin
If you want your tags, git push --tags origin
6
"Create new empty projects in GitLab" this was the question. I want to do it from CLI
– Jitendra Vyas
Oct 15 '15 at 12:05
maybe we shouldgit remote remove origin
first
– MichaelMao
Apr 24 '17 at 7:25
add a comment |
Create new empty projects in GitLab for each of your local repos you want to push to GitLab. After you create the project's, you will be taken to the default project page.
Then cd into each of your existing git repos. Do a git remote add origin <your new gitlab repo address>
And then a git push -u origin master
You will need to do this for each of your repos you want to add.
Your repo address is given to you on the project page. As http and/or ssh. If you already have a remote called origin on your local machine, you might want to rename it first. Or you can call the gitlab one something different. Also if you want to push all your branches to gitlab you can do a git push --all origin
If you want your tags, git push --tags origin
6
"Create new empty projects in GitLab" this was the question. I want to do it from CLI
– Jitendra Vyas
Oct 15 '15 at 12:05
maybe we shouldgit remote remove origin
first
– MichaelMao
Apr 24 '17 at 7:25
add a comment |
Create new empty projects in GitLab for each of your local repos you want to push to GitLab. After you create the project's, you will be taken to the default project page.
Then cd into each of your existing git repos. Do a git remote add origin <your new gitlab repo address>
And then a git push -u origin master
You will need to do this for each of your repos you want to add.
Your repo address is given to you on the project page. As http and/or ssh. If you already have a remote called origin on your local machine, you might want to rename it first. Or you can call the gitlab one something different. Also if you want to push all your branches to gitlab you can do a git push --all origin
If you want your tags, git push --tags origin
Create new empty projects in GitLab for each of your local repos you want to push to GitLab. After you create the project's, you will be taken to the default project page.
Then cd into each of your existing git repos. Do a git remote add origin <your new gitlab repo address>
And then a git push -u origin master
You will need to do this for each of your repos you want to add.
Your repo address is given to you on the project page. As http and/or ssh. If you already have a remote called origin on your local machine, you might want to rename it first. Or you can call the gitlab one something different. Also if you want to push all your branches to gitlab you can do a git push --all origin
If you want your tags, git push --tags origin
answered Oct 13 '15 at 17:36
twk3twk3
1,46387
1,46387
6
"Create new empty projects in GitLab" this was the question. I want to do it from CLI
– Jitendra Vyas
Oct 15 '15 at 12:05
maybe we shouldgit remote remove origin
first
– MichaelMao
Apr 24 '17 at 7:25
add a comment |
6
"Create new empty projects in GitLab" this was the question. I want to do it from CLI
– Jitendra Vyas
Oct 15 '15 at 12:05
maybe we shouldgit remote remove origin
first
– MichaelMao
Apr 24 '17 at 7:25
6
6
"Create new empty projects in GitLab" this was the question. I want to do it from CLI
– Jitendra Vyas
Oct 15 '15 at 12:05
"Create new empty projects in GitLab" this was the question. I want to do it from CLI
– Jitendra Vyas
Oct 15 '15 at 12:05
maybe we should
git remote remove origin
first– MichaelMao
Apr 24 '17 at 7:25
maybe we should
git remote remove origin
first– MichaelMao
Apr 24 '17 at 7:25
add a comment |
2018 Solution: just use --set-upstream
Assuming you'll take care of writing the script that would do the following for each of your local repo, it seems that as of Gitlab 10.5 you can simply use
git push --set-upstream address/your-project.git
This will create a new project on Gitlab without you creating it manually on the server
From the Documentation
Push to create a new project
When you create a new repo locally, instead of going to GitLab to manually create a new project and then push the repo, you can directly push it to GitLab to create the new project, all without leaving your terminal. If you have access to that namespace, we will automatically create a new project under that GitLab namespace with its visibility set to Private by default (you can later change it in the project's settings).
This can be done by using either SSH or HTTP:
## Git push using SSH
git push --set-upstream git@gitlab.example.com:namespace/nonexistent-project.git master
## Git push using HTTP
git push --set-upstream https://gitlab.example.com/namespace/nonexistent-project.git master
Once the push finishes successfully, a remote message will indicate the command to set the remote and the URL to the new project:
remote:
remote: The private project namespace/nonexistent-project was created.
remote:
remote: To configure the remote, run:
remote: git remote add origin https://gitlab.example.com/namespace/nonexistent-project.git
remote:
remote: To view the project, visit:
remote: https://gitlab.example.com/namespace/nonexistent-project
remote:
add a comment |
2018 Solution: just use --set-upstream
Assuming you'll take care of writing the script that would do the following for each of your local repo, it seems that as of Gitlab 10.5 you can simply use
git push --set-upstream address/your-project.git
This will create a new project on Gitlab without you creating it manually on the server
From the Documentation
Push to create a new project
When you create a new repo locally, instead of going to GitLab to manually create a new project and then push the repo, you can directly push it to GitLab to create the new project, all without leaving your terminal. If you have access to that namespace, we will automatically create a new project under that GitLab namespace with its visibility set to Private by default (you can later change it in the project's settings).
This can be done by using either SSH or HTTP:
## Git push using SSH
git push --set-upstream git@gitlab.example.com:namespace/nonexistent-project.git master
## Git push using HTTP
git push --set-upstream https://gitlab.example.com/namespace/nonexistent-project.git master
Once the push finishes successfully, a remote message will indicate the command to set the remote and the URL to the new project:
remote:
remote: The private project namespace/nonexistent-project was created.
remote:
remote: To configure the remote, run:
remote: git remote add origin https://gitlab.example.com/namespace/nonexistent-project.git
remote:
remote: To view the project, visit:
remote: https://gitlab.example.com/namespace/nonexistent-project
remote:
add a comment |
2018 Solution: just use --set-upstream
Assuming you'll take care of writing the script that would do the following for each of your local repo, it seems that as of Gitlab 10.5 you can simply use
git push --set-upstream address/your-project.git
This will create a new project on Gitlab without you creating it manually on the server
From the Documentation
Push to create a new project
When you create a new repo locally, instead of going to GitLab to manually create a new project and then push the repo, you can directly push it to GitLab to create the new project, all without leaving your terminal. If you have access to that namespace, we will automatically create a new project under that GitLab namespace with its visibility set to Private by default (you can later change it in the project's settings).
This can be done by using either SSH or HTTP:
## Git push using SSH
git push --set-upstream git@gitlab.example.com:namespace/nonexistent-project.git master
## Git push using HTTP
git push --set-upstream https://gitlab.example.com/namespace/nonexistent-project.git master
Once the push finishes successfully, a remote message will indicate the command to set the remote and the URL to the new project:
remote:
remote: The private project namespace/nonexistent-project was created.
remote:
remote: To configure the remote, run:
remote: git remote add origin https://gitlab.example.com/namespace/nonexistent-project.git
remote:
remote: To view the project, visit:
remote: https://gitlab.example.com/namespace/nonexistent-project
remote:
2018 Solution: just use --set-upstream
Assuming you'll take care of writing the script that would do the following for each of your local repo, it seems that as of Gitlab 10.5 you can simply use
git push --set-upstream address/your-project.git
This will create a new project on Gitlab without you creating it manually on the server
From the Documentation
Push to create a new project
When you create a new repo locally, instead of going to GitLab to manually create a new project and then push the repo, you can directly push it to GitLab to create the new project, all without leaving your terminal. If you have access to that namespace, we will automatically create a new project under that GitLab namespace with its visibility set to Private by default (you can later change it in the project's settings).
This can be done by using either SSH or HTTP:
## Git push using SSH
git push --set-upstream git@gitlab.example.com:namespace/nonexistent-project.git master
## Git push using HTTP
git push --set-upstream https://gitlab.example.com/namespace/nonexistent-project.git master
Once the push finishes successfully, a remote message will indicate the command to set the remote and the URL to the new project:
remote:
remote: The private project namespace/nonexistent-project was created.
remote:
remote: To configure the remote, run:
remote: git remote add origin https://gitlab.example.com/namespace/nonexistent-project.git
remote:
remote: To view the project, visit:
remote: https://gitlab.example.com/namespace/nonexistent-project
remote:
edited Nov 14 '18 at 14:28
answered Mar 16 '18 at 9:43
tedted
2,51712049
2,51712049
add a comment |
add a comment |
I have to agree with you that documentation for Gitlab's API wrapper third-party applications is not ideal, however I did manage to make one of them work.
For this, I set up a sandbox gitlab server (GitLab Community Edition 8.0.5) in a vagrant box running Ubuntu 14.04.
Now, the API wrapper I used is this one (python-gitlab by Gauvain Pocentek). I chose this one because it is starred by enough people (118 at time of writing) and it's written in python so portability will not be an issue (my host machine is Windows with cygwin, but I will be using unix syntax for this answer).
Installation is quite easy with pip
:
$ sudo pip install python-gitlab
Once installed you will have to modify a config file -that does not exist out-of-the-box or, at least, I could not locate it- (the documentation was not clear about this). This file's "official" name is .python-gitlab.cfg
and this is the one that config.py is searching by default.
Anyway, I created my own version of .python-gitlab.cfg
based on the sample syntax found at the project's github which goes like this:
[global]
# required setting
default = local
# optional settings
ssl_verify = false
timeout = 5
[local]
# url = http://10.0.3.2:8080
# get the private token from the gitlab web interface
# private_token = vTbFeqJYCY3sibBP7BZM
[remote]
url = YOUR SERVER URL GOES HERE
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = false
[remote-ssl]
url = YOUR HTTPS URL GOES HERE (eg https://gitlab.ccompanyname.com))
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = true (VALID CERTIFICATE) OR false (SELF-SIGNED CERTIFICATE)
You will have to get yourself a private token from the web interface (found in Profile Settings :: Account) since, as the README points out,
Only private token authentication is supported (not user/password).
After this is taken care of, creating a project can be achieved like this, for http
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote project create --name YOUR_PROJECT_NAME
and like this for https
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote-ssl project create --name YOUR_PROJECT_NAME
The switches used above, can be found by looking at the help:
$ gitlab --help
Now, assuming that you have taken care of SSH keys (both locally and in the web interface), and that you want the gitlab repo names to be the same as the directories in your local git, then, a little bash
script like the following, can automate the project creation and the local repos push:
#!/usr/bin/bash
cd 'PATH/TO/YOUR/REPOS/DIRECTORY' # enter your local repos dir here
server="YOUR SERVER" # enter your server URL
user="YOUR USER" # enter your user name
gitlab_cfg="PATH/TO/YOUR/.python-gitlab.cfg" # enter the location of config file
#method="remote" # uncomment for http, comment for https
method="remote-ssl" # uncomment for https, comment for http
for i in $( ls -1 ); do
echo
echo
echo '>> Creating Project'
gitlab -c $gitlab_cfg --gitlab $method project create --name $i
echo '>> Project ' $i 'created'
echo '>> ------'
cd $i
li=$( tr '[A-Z]' '[a-z]' <<< $i) # convert dirname to lowercase, safe with older bashes (<4)
origin="git@$server:$user/$li.git"
echo ">> Reassigning origin to : $origin"
git remote rm origin
git remote add origin $origin
git remote -v
echo '>> Pushing local repo to gitlab'
git push -u origin master
echo '>> Done'
echo
echo
cd ..
done
echo
echo 'Operation finished'
What it does is create gitlab projects named after the dirnames found at the outer local git directory, then cd
's into each one of them, renews the origin and then performs the push.
One thing to mention here is that gitlab converts repo urls to lowercase, for example sampleRepo001
becomes samplerepo001
in the repo's url; that's why I convert dirnames to lowercase in the script.
And, finally, here is an example run of the script:
As a reminder, if you want to use this script, test thoroughly before applying to the actual production server.
Update - I added some more info on how to handle HTTPS/SSL.
add a comment |
I have to agree with you that documentation for Gitlab's API wrapper third-party applications is not ideal, however I did manage to make one of them work.
For this, I set up a sandbox gitlab server (GitLab Community Edition 8.0.5) in a vagrant box running Ubuntu 14.04.
Now, the API wrapper I used is this one (python-gitlab by Gauvain Pocentek). I chose this one because it is starred by enough people (118 at time of writing) and it's written in python so portability will not be an issue (my host machine is Windows with cygwin, but I will be using unix syntax for this answer).
Installation is quite easy with pip
:
$ sudo pip install python-gitlab
Once installed you will have to modify a config file -that does not exist out-of-the-box or, at least, I could not locate it- (the documentation was not clear about this). This file's "official" name is .python-gitlab.cfg
and this is the one that config.py is searching by default.
Anyway, I created my own version of .python-gitlab.cfg
based on the sample syntax found at the project's github which goes like this:
[global]
# required setting
default = local
# optional settings
ssl_verify = false
timeout = 5
[local]
# url = http://10.0.3.2:8080
# get the private token from the gitlab web interface
# private_token = vTbFeqJYCY3sibBP7BZM
[remote]
url = YOUR SERVER URL GOES HERE
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = false
[remote-ssl]
url = YOUR HTTPS URL GOES HERE (eg https://gitlab.ccompanyname.com))
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = true (VALID CERTIFICATE) OR false (SELF-SIGNED CERTIFICATE)
You will have to get yourself a private token from the web interface (found in Profile Settings :: Account) since, as the README points out,
Only private token authentication is supported (not user/password).
After this is taken care of, creating a project can be achieved like this, for http
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote project create --name YOUR_PROJECT_NAME
and like this for https
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote-ssl project create --name YOUR_PROJECT_NAME
The switches used above, can be found by looking at the help:
$ gitlab --help
Now, assuming that you have taken care of SSH keys (both locally and in the web interface), and that you want the gitlab repo names to be the same as the directories in your local git, then, a little bash
script like the following, can automate the project creation and the local repos push:
#!/usr/bin/bash
cd 'PATH/TO/YOUR/REPOS/DIRECTORY' # enter your local repos dir here
server="YOUR SERVER" # enter your server URL
user="YOUR USER" # enter your user name
gitlab_cfg="PATH/TO/YOUR/.python-gitlab.cfg" # enter the location of config file
#method="remote" # uncomment for http, comment for https
method="remote-ssl" # uncomment for https, comment for http
for i in $( ls -1 ); do
echo
echo
echo '>> Creating Project'
gitlab -c $gitlab_cfg --gitlab $method project create --name $i
echo '>> Project ' $i 'created'
echo '>> ------'
cd $i
li=$( tr '[A-Z]' '[a-z]' <<< $i) # convert dirname to lowercase, safe with older bashes (<4)
origin="git@$server:$user/$li.git"
echo ">> Reassigning origin to : $origin"
git remote rm origin
git remote add origin $origin
git remote -v
echo '>> Pushing local repo to gitlab'
git push -u origin master
echo '>> Done'
echo
echo
cd ..
done
echo
echo 'Operation finished'
What it does is create gitlab projects named after the dirnames found at the outer local git directory, then cd
's into each one of them, renews the origin and then performs the push.
One thing to mention here is that gitlab converts repo urls to lowercase, for example sampleRepo001
becomes samplerepo001
in the repo's url; that's why I convert dirnames to lowercase in the script.
And, finally, here is an example run of the script:
As a reminder, if you want to use this script, test thoroughly before applying to the actual production server.
Update - I added some more info on how to handle HTTPS/SSL.
add a comment |
I have to agree with you that documentation for Gitlab's API wrapper third-party applications is not ideal, however I did manage to make one of them work.
For this, I set up a sandbox gitlab server (GitLab Community Edition 8.0.5) in a vagrant box running Ubuntu 14.04.
Now, the API wrapper I used is this one (python-gitlab by Gauvain Pocentek). I chose this one because it is starred by enough people (118 at time of writing) and it's written in python so portability will not be an issue (my host machine is Windows with cygwin, but I will be using unix syntax for this answer).
Installation is quite easy with pip
:
$ sudo pip install python-gitlab
Once installed you will have to modify a config file -that does not exist out-of-the-box or, at least, I could not locate it- (the documentation was not clear about this). This file's "official" name is .python-gitlab.cfg
and this is the one that config.py is searching by default.
Anyway, I created my own version of .python-gitlab.cfg
based on the sample syntax found at the project's github which goes like this:
[global]
# required setting
default = local
# optional settings
ssl_verify = false
timeout = 5
[local]
# url = http://10.0.3.2:8080
# get the private token from the gitlab web interface
# private_token = vTbFeqJYCY3sibBP7BZM
[remote]
url = YOUR SERVER URL GOES HERE
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = false
[remote-ssl]
url = YOUR HTTPS URL GOES HERE (eg https://gitlab.ccompanyname.com))
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = true (VALID CERTIFICATE) OR false (SELF-SIGNED CERTIFICATE)
You will have to get yourself a private token from the web interface (found in Profile Settings :: Account) since, as the README points out,
Only private token authentication is supported (not user/password).
After this is taken care of, creating a project can be achieved like this, for http
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote project create --name YOUR_PROJECT_NAME
and like this for https
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote-ssl project create --name YOUR_PROJECT_NAME
The switches used above, can be found by looking at the help:
$ gitlab --help
Now, assuming that you have taken care of SSH keys (both locally and in the web interface), and that you want the gitlab repo names to be the same as the directories in your local git, then, a little bash
script like the following, can automate the project creation and the local repos push:
#!/usr/bin/bash
cd 'PATH/TO/YOUR/REPOS/DIRECTORY' # enter your local repos dir here
server="YOUR SERVER" # enter your server URL
user="YOUR USER" # enter your user name
gitlab_cfg="PATH/TO/YOUR/.python-gitlab.cfg" # enter the location of config file
#method="remote" # uncomment for http, comment for https
method="remote-ssl" # uncomment for https, comment for http
for i in $( ls -1 ); do
echo
echo
echo '>> Creating Project'
gitlab -c $gitlab_cfg --gitlab $method project create --name $i
echo '>> Project ' $i 'created'
echo '>> ------'
cd $i
li=$( tr '[A-Z]' '[a-z]' <<< $i) # convert dirname to lowercase, safe with older bashes (<4)
origin="git@$server:$user/$li.git"
echo ">> Reassigning origin to : $origin"
git remote rm origin
git remote add origin $origin
git remote -v
echo '>> Pushing local repo to gitlab'
git push -u origin master
echo '>> Done'
echo
echo
cd ..
done
echo
echo 'Operation finished'
What it does is create gitlab projects named after the dirnames found at the outer local git directory, then cd
's into each one of them, renews the origin and then performs the push.
One thing to mention here is that gitlab converts repo urls to lowercase, for example sampleRepo001
becomes samplerepo001
in the repo's url; that's why I convert dirnames to lowercase in the script.
And, finally, here is an example run of the script:
As a reminder, if you want to use this script, test thoroughly before applying to the actual production server.
Update - I added some more info on how to handle HTTPS/SSL.
I have to agree with you that documentation for Gitlab's API wrapper third-party applications is not ideal, however I did manage to make one of them work.
For this, I set up a sandbox gitlab server (GitLab Community Edition 8.0.5) in a vagrant box running Ubuntu 14.04.
Now, the API wrapper I used is this one (python-gitlab by Gauvain Pocentek). I chose this one because it is starred by enough people (118 at time of writing) and it's written in python so portability will not be an issue (my host machine is Windows with cygwin, but I will be using unix syntax for this answer).
Installation is quite easy with pip
:
$ sudo pip install python-gitlab
Once installed you will have to modify a config file -that does not exist out-of-the-box or, at least, I could not locate it- (the documentation was not clear about this). This file's "official" name is .python-gitlab.cfg
and this is the one that config.py is searching by default.
Anyway, I created my own version of .python-gitlab.cfg
based on the sample syntax found at the project's github which goes like this:
[global]
# required setting
default = local
# optional settings
ssl_verify = false
timeout = 5
[local]
# url = http://10.0.3.2:8080
# get the private token from the gitlab web interface
# private_token = vTbFeqJYCY3sibBP7BZM
[remote]
url = YOUR SERVER URL GOES HERE
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = false
[remote-ssl]
url = YOUR HTTPS URL GOES HERE (eg https://gitlab.ccompanyname.com))
private_token = YOUR PRIVATE TOKEN GOES HERE
ssl_verify = true (VALID CERTIFICATE) OR false (SELF-SIGNED CERTIFICATE)
You will have to get yourself a private token from the web interface (found in Profile Settings :: Account) since, as the README points out,
Only private token authentication is supported (not user/password).
After this is taken care of, creating a project can be achieved like this, for http
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote project create --name YOUR_PROJECT_NAME
and like this for https
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote-ssl project create --name YOUR_PROJECT_NAME
The switches used above, can be found by looking at the help:
$ gitlab --help
Now, assuming that you have taken care of SSH keys (both locally and in the web interface), and that you want the gitlab repo names to be the same as the directories in your local git, then, a little bash
script like the following, can automate the project creation and the local repos push:
#!/usr/bin/bash
cd 'PATH/TO/YOUR/REPOS/DIRECTORY' # enter your local repos dir here
server="YOUR SERVER" # enter your server URL
user="YOUR USER" # enter your user name
gitlab_cfg="PATH/TO/YOUR/.python-gitlab.cfg" # enter the location of config file
#method="remote" # uncomment for http, comment for https
method="remote-ssl" # uncomment for https, comment for http
for i in $( ls -1 ); do
echo
echo
echo '>> Creating Project'
gitlab -c $gitlab_cfg --gitlab $method project create --name $i
echo '>> Project ' $i 'created'
echo '>> ------'
cd $i
li=$( tr '[A-Z]' '[a-z]' <<< $i) # convert dirname to lowercase, safe with older bashes (<4)
origin="git@$server:$user/$li.git"
echo ">> Reassigning origin to : $origin"
git remote rm origin
git remote add origin $origin
git remote -v
echo '>> Pushing local repo to gitlab'
git push -u origin master
echo '>> Done'
echo
echo
cd ..
done
echo
echo 'Operation finished'
What it does is create gitlab projects named after the dirnames found at the outer local git directory, then cd
's into each one of them, renews the origin and then performs the push.
One thing to mention here is that gitlab converts repo urls to lowercase, for example sampleRepo001
becomes samplerepo001
in the repo's url; that's why I convert dirnames to lowercase in the script.
And, finally, here is an example run of the script:
As a reminder, if you want to use this script, test thoroughly before applying to the actual production server.
Update - I added some more info on how to handle HTTPS/SSL.
edited Oct 16 '15 at 21:32
answered Oct 15 '15 at 18:01
sokinsokin
74421219
74421219
add a comment |
add a comment |
If you use nodejs, or even have a simple understanding of it, the node-gitlab module is great. On a self hosted Gitlab instance I've been able to create projects and import the repos from a remote repository (a local git server). The process should be similar for a local repository. You could setup a local git server on your machine and use that as the import_url for each Gitlab project.
Or, you can write a script that will use the API to create the project then push each repository to its respective project.
Pseudocode:
for each repo in directory:
- Use API to create project on gitlab.com
- git remote add gitlab url-to-gitlab-repo
- git push gitlab --mirror
add a comment |
If you use nodejs, or even have a simple understanding of it, the node-gitlab module is great. On a self hosted Gitlab instance I've been able to create projects and import the repos from a remote repository (a local git server). The process should be similar for a local repository. You could setup a local git server on your machine and use that as the import_url for each Gitlab project.
Or, you can write a script that will use the API to create the project then push each repository to its respective project.
Pseudocode:
for each repo in directory:
- Use API to create project on gitlab.com
- git remote add gitlab url-to-gitlab-repo
- git push gitlab --mirror
add a comment |
If you use nodejs, or even have a simple understanding of it, the node-gitlab module is great. On a self hosted Gitlab instance I've been able to create projects and import the repos from a remote repository (a local git server). The process should be similar for a local repository. You could setup a local git server on your machine and use that as the import_url for each Gitlab project.
Or, you can write a script that will use the API to create the project then push each repository to its respective project.
Pseudocode:
for each repo in directory:
- Use API to create project on gitlab.com
- git remote add gitlab url-to-gitlab-repo
- git push gitlab --mirror
If you use nodejs, or even have a simple understanding of it, the node-gitlab module is great. On a self hosted Gitlab instance I've been able to create projects and import the repos from a remote repository (a local git server). The process should be similar for a local repository. You could setup a local git server on your machine and use that as the import_url for each Gitlab project.
Or, you can write a script that will use the API to create the project then push each repository to its respective project.
Pseudocode:
for each repo in directory:
- Use API to create project on gitlab.com
- git remote add gitlab url-to-gitlab-repo
- git push gitlab --mirror
edited Jun 30 '16 at 23:34
answered Jun 30 '16 at 23:15
user3606666user3606666
112
112
add a comment |
add a comment |
git-repo has done the dirty jobs for you. It also supports GitLab, GitHub and Bitbucket.
1. Installation
apt-get install python-pip
pip install git-repo
you might need pip3 if the above command is not working.
(optional)
apt-get install python3-pip
pip3 install git-repo
2 Configuration
2.1 necessary configuration
git repo config
The command line tool, step by step, will ask if you want to set up bitbucket, github, gitlab account, press 'y/n' and username/password accordingly. If you do not know what it means, press 'n' to skip. The configuration file will be generated in ~/.gitconfig
. You may want to tweak it afterwards.
(optional) for example, you could manually set token in ~/.gitconfig like this:
[gitrepo "gitlab"]
token = xxxxxxx
[gitrepo "github"]
token = xxxxxxx
2.2 better shortcut
append following lines to ~/.gitconfig.
[alias]
hub = repo hub
lab = repo lab
why?
Because now you could simply use shortcut
git lab clone /howto
git hub clone /howto
in the future.
Note: you need authentication
to clone private
repositories
2.3 (optional) adding private permissions right
cd ~/.ssh
see if you have id_rsa.pub
file. pub
means public file and I recommend you just copy
the whole content and paste
to gitlab.com public ssh webpage.
Done.
You should not show others about corresponding file id_rsa
, which is your key to access to gitlab repository. Other client/computer having id_rsa
, with permission chmod 600 id_rsa
, will be able to control repository.
if you do not see id_rsa.pub
, you could generate it using:
ssh-keygen -t rsa
Press enter
to leave it default. Now you can see id_rsa.pub
and id_rsa
inside ~/.ssh directory. If you are using different name other than id_rsa by default, you should modify ~/.ssh/config file like this:
# private account
Host github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
3. git-repo Usage
as you're starting a new project, you want to create a new
repository, out of GitLab, to push to:
git lab create <username>/howto
of course, you could delete, list repositories, or do other stuff.
git lab delete <username>/howto
git lab list <username>
git lab clone <username>/howto
git clone git@gitlab.com:<username>/howto
Practical Example
Assuming you have developed a local myproject
directory with git committed for a while. Now you want to upload to GitLab.
create remote repo in gitlab. You will see username/myproject in gitlab page.
git lab create username/myproject
Assuming there is a .git file under local myproject directory
cd myproject
link local directory to remote gitlab.com repo.
git lab add username/myproject
upload myproject directory to gitlab.com
git push -u gitlab master
done
add a comment |
git-repo has done the dirty jobs for you. It also supports GitLab, GitHub and Bitbucket.
1. Installation
apt-get install python-pip
pip install git-repo
you might need pip3 if the above command is not working.
(optional)
apt-get install python3-pip
pip3 install git-repo
2 Configuration
2.1 necessary configuration
git repo config
The command line tool, step by step, will ask if you want to set up bitbucket, github, gitlab account, press 'y/n' and username/password accordingly. If you do not know what it means, press 'n' to skip. The configuration file will be generated in ~/.gitconfig
. You may want to tweak it afterwards.
(optional) for example, you could manually set token in ~/.gitconfig like this:
[gitrepo "gitlab"]
token = xxxxxxx
[gitrepo "github"]
token = xxxxxxx
2.2 better shortcut
append following lines to ~/.gitconfig.
[alias]
hub = repo hub
lab = repo lab
why?
Because now you could simply use shortcut
git lab clone /howto
git hub clone /howto
in the future.
Note: you need authentication
to clone private
repositories
2.3 (optional) adding private permissions right
cd ~/.ssh
see if you have id_rsa.pub
file. pub
means public file and I recommend you just copy
the whole content and paste
to gitlab.com public ssh webpage.
Done.
You should not show others about corresponding file id_rsa
, which is your key to access to gitlab repository. Other client/computer having id_rsa
, with permission chmod 600 id_rsa
, will be able to control repository.
if you do not see id_rsa.pub
, you could generate it using:
ssh-keygen -t rsa
Press enter
to leave it default. Now you can see id_rsa.pub
and id_rsa
inside ~/.ssh directory. If you are using different name other than id_rsa by default, you should modify ~/.ssh/config file like this:
# private account
Host github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
3. git-repo Usage
as you're starting a new project, you want to create a new
repository, out of GitLab, to push to:
git lab create <username>/howto
of course, you could delete, list repositories, or do other stuff.
git lab delete <username>/howto
git lab list <username>
git lab clone <username>/howto
git clone git@gitlab.com:<username>/howto
Practical Example
Assuming you have developed a local myproject
directory with git committed for a while. Now you want to upload to GitLab.
create remote repo in gitlab. You will see username/myproject in gitlab page.
git lab create username/myproject
Assuming there is a .git file under local myproject directory
cd myproject
link local directory to remote gitlab.com repo.
git lab add username/myproject
upload myproject directory to gitlab.com
git push -u gitlab master
done
add a comment |
git-repo has done the dirty jobs for you. It also supports GitLab, GitHub and Bitbucket.
1. Installation
apt-get install python-pip
pip install git-repo
you might need pip3 if the above command is not working.
(optional)
apt-get install python3-pip
pip3 install git-repo
2 Configuration
2.1 necessary configuration
git repo config
The command line tool, step by step, will ask if you want to set up bitbucket, github, gitlab account, press 'y/n' and username/password accordingly. If you do not know what it means, press 'n' to skip. The configuration file will be generated in ~/.gitconfig
. You may want to tweak it afterwards.
(optional) for example, you could manually set token in ~/.gitconfig like this:
[gitrepo "gitlab"]
token = xxxxxxx
[gitrepo "github"]
token = xxxxxxx
2.2 better shortcut
append following lines to ~/.gitconfig.
[alias]
hub = repo hub
lab = repo lab
why?
Because now you could simply use shortcut
git lab clone /howto
git hub clone /howto
in the future.
Note: you need authentication
to clone private
repositories
2.3 (optional) adding private permissions right
cd ~/.ssh
see if you have id_rsa.pub
file. pub
means public file and I recommend you just copy
the whole content and paste
to gitlab.com public ssh webpage.
Done.
You should not show others about corresponding file id_rsa
, which is your key to access to gitlab repository. Other client/computer having id_rsa
, with permission chmod 600 id_rsa
, will be able to control repository.
if you do not see id_rsa.pub
, you could generate it using:
ssh-keygen -t rsa
Press enter
to leave it default. Now you can see id_rsa.pub
and id_rsa
inside ~/.ssh directory. If you are using different name other than id_rsa by default, you should modify ~/.ssh/config file like this:
# private account
Host github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
3. git-repo Usage
as you're starting a new project, you want to create a new
repository, out of GitLab, to push to:
git lab create <username>/howto
of course, you could delete, list repositories, or do other stuff.
git lab delete <username>/howto
git lab list <username>
git lab clone <username>/howto
git clone git@gitlab.com:<username>/howto
Practical Example
Assuming you have developed a local myproject
directory with git committed for a while. Now you want to upload to GitLab.
create remote repo in gitlab. You will see username/myproject in gitlab page.
git lab create username/myproject
Assuming there is a .git file under local myproject directory
cd myproject
link local directory to remote gitlab.com repo.
git lab add username/myproject
upload myproject directory to gitlab.com
git push -u gitlab master
done
git-repo has done the dirty jobs for you. It also supports GitLab, GitHub and Bitbucket.
1. Installation
apt-get install python-pip
pip install git-repo
you might need pip3 if the above command is not working.
(optional)
apt-get install python3-pip
pip3 install git-repo
2 Configuration
2.1 necessary configuration
git repo config
The command line tool, step by step, will ask if you want to set up bitbucket, github, gitlab account, press 'y/n' and username/password accordingly. If you do not know what it means, press 'n' to skip. The configuration file will be generated in ~/.gitconfig
. You may want to tweak it afterwards.
(optional) for example, you could manually set token in ~/.gitconfig like this:
[gitrepo "gitlab"]
token = xxxxxxx
[gitrepo "github"]
token = xxxxxxx
2.2 better shortcut
append following lines to ~/.gitconfig.
[alias]
hub = repo hub
lab = repo lab
why?
Because now you could simply use shortcut
git lab clone /howto
git hub clone /howto
in the future.
Note: you need authentication
to clone private
repositories
2.3 (optional) adding private permissions right
cd ~/.ssh
see if you have id_rsa.pub
file. pub
means public file and I recommend you just copy
the whole content and paste
to gitlab.com public ssh webpage.
Done.
You should not show others about corresponding file id_rsa
, which is your key to access to gitlab repository. Other client/computer having id_rsa
, with permission chmod 600 id_rsa
, will be able to control repository.
if you do not see id_rsa.pub
, you could generate it using:
ssh-keygen -t rsa
Press enter
to leave it default. Now you can see id_rsa.pub
and id_rsa
inside ~/.ssh directory. If you are using different name other than id_rsa by default, you should modify ~/.ssh/config file like this:
# private account
Host github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
3. git-repo Usage
as you're starting a new project, you want to create a new
repository, out of GitLab, to push to:
git lab create <username>/howto
of course, you could delete, list repositories, or do other stuff.
git lab delete <username>/howto
git lab list <username>
git lab clone <username>/howto
git clone git@gitlab.com:<username>/howto
Practical Example
Assuming you have developed a local myproject
directory with git committed for a while. Now you want to upload to GitLab.
create remote repo in gitlab. You will see username/myproject in gitlab page.
git lab create username/myproject
Assuming there is a .git file under local myproject directory
cd myproject
link local directory to remote gitlab.com repo.
git lab add username/myproject
upload myproject directory to gitlab.com
git push -u gitlab master
done
edited Apr 18 '17 at 10:48
answered Feb 18 '17 at 6:04
anonymousanonymous
475611
475611
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f33101962%2fhow-to-create-a-new-gitlab-repo-from-my-existing-local-git-repo-using-cli%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
From your url I assume that you are running a gitlab server. According to the documentation of the Gitlab CE, there are third-party appications that are wrappers/CLIs for the API. Maybe one of these might be helpful.
– sokin
Oct 13 '15 at 12:48
i tried tools given of that page. documentation is not clear to me
– Jitendra Vyas
Oct 13 '15 at 13:24
Since GitLab 10.5 (Feb 2018), it is possible to simply push to create a new project on GitLab. @JitendraVyas consider accepting ted's answer below to improve the visibility of this solution.
– joelostblom
Apr 24 '18 at 22:32
It's worth noting that if you create a new project on gitlab the blank project then comes up with detailed instructions for all manners of ways to get your code into it :-)
– Bananaapple
May 3 '18 at 7:58