# To your own domain
git push --set-upstream address/your-project.git
# To gitlab.com with SSH
git push --set-upstream git@gitlab.example.com:username/new-repo.git master
# To gitlab.com with HTTP
git push --set-upstream https://gitlab.example.com/username/new-repo.git master
[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)
#!/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'
5条答案
按热度按时间slmsl1lt1#
2018解决方案:使用
--set-upstream
假设你会为每个本地仓库编写以下脚本,那么从Gitlab 10.5开始,你可以简单地使用
这将在Gitlab上创建一个新项目**,而无需在服务器上手动创建**
来自文档
按下创建新项目
当你在本地创建一个新的仓库时,不用在GitLab中手动创建一个新的项目,然后在本地克隆仓库,你可以直接将其推送到GitLab来创建新的项目,所有这些都不需要离开你的终端。如果您拥有相关命名空间的访问权限,GitLab会自动在该GitLab命名空间下创建一个新项目,默认情况下其可见性设置为Private(您可以稍后在项目的设置中更改它)。
这可以通过使用SSH或HTTPS来完成:
您可以将标志
--tags
传递给git push
命令,以导出现有的存储库标记。推送成功完成后,远程消息将指示设置远程的命令和新项目的URL:
i7uq4tfw2#
在GitLab中为每个要推送到GitLab的本地仓库创建新的空项目。创建项目后,将转到默认项目页面。
然后cd到你现有的每个git仓库中。做一个
git remote add origin <your new gitlab repo address>
然后是
git push -u origin master
您需要为要添加的每个存储库执行此操作。
您的仓库地址将在项目页面上提供给您。如http和/或ssh。如果您的本地计算机上已经有一个名为origin的远程服务器,您可能需要先重命名它。或者你可以给gitlab一个不同的名字。另外,如果你想把所有分支都推送到gitlab,你可以做一个
git push --all origin
如果你想要标签,git push --tags origin
2w2cym1i3#
我不得不同意你的观点,Gitlab的API Package 器third-party applications的文档并不理想,但我确实设法使其中一个工作。
为此,我在运行 Ubuntu 14.04 的vagrant box中设置了一个沙箱gitlab服务器(GitLab Community Edition 8.0.5)。
现在,我使用的API Package 器是this one(python-gitlab by Gauvain Pocentek)。我选择这个是因为它有足够多的人(写这篇文章时有118人),而且它是用python写的,所以可移植性不会成为问题(我的主机是 Windows 和 cygwin,但我将使用unix语法来回答这个问题)。
使用
pip
安装非常简单:一旦安装完成,你就必须修改一个配置文件--这个配置文件不存在 * 开箱即用 *,或者至少我找不到它--(文档没有明确说明这一点)。这个文件的“官方”名称是
.python-gitlab.cfg
,这也是 * config.py * 默认搜索的文件。无论如何,我基于在项目的github上找到的示例语法创建了自己的
.python-gitlab.cfg
版本,如下所示:您必须从Web界面获取私人令牌(可在 * 配置文件设置 *::Account),因为正如README所指出的,
仅支持私有令牌身份验证(不支持用户/密码)。
处理好后,创建项目可以这样实现,对于
http
:比如
https
:上面使用的开关可以通过查看帮助找到:
现在,* 假设 * 你已经处理了SSH密钥(本地和web界面中),并且你希望gitlab仓库名称与本地git中的目录相同,那么,像下面这样的小
bash
脚本可以自动创建项目和本地仓库推送:它所做的是创建以外部本地git目录中的目录名命名的gitlab项目,然后将
cd
放入每个项目中,更新原始目录,然后执行推送。这里要提到的一件事是,gitlab将repo url转换为小写,例如,在repo的url中,
sampleRepo001
变为samplerepo001
;这就是为什么我在脚本中将目录名转换为小写。最后,这里是脚本的一个示例运行:
需要提醒的是,如果您想使用这个脚本,在应用到实际的生产服务器之前要进行彻底的测试。
更新-我添加了一些关于如何处理HTTPS/SSL的更多信息。
ttcibm8c4#
如果你使用nodejs,或者对它有一个简单的了解,node-gitlab模块是很棒的。在一个自托管的Gitlab示例上,我已经能够创建项目并从远程存储库(本地git服务器)导入repos。对于本地存储库,该过程应该类似。你可以在你的机器上设置一个本地git服务器,并将其用作每个Gitlab项目的import_url。
或者,您可以编写一个脚本,该脚本将使用API创建项目,然后将每个存储库推送到其各自的项目。
伪代码:对于目录中的每个存储库:
eimct9ow5#
在GitLab中创建一个新的空项目后,它会向您显示执行此操作的命令列表。下面是推送现有本地存储库的命令示例。下面是GitLab提供的不同示例的图像。
推送已有的Git仓库
GitLab说明示例