Как создать новый репозиторий gitlab из существующего локального репозитория git с использованием CLI?
У меня есть много локальных репозиториев git на моем OSX. Используя командную строку, я хочу создать новые репозитории gitlab на https://gitlab.ccompanyname.com, сформировать существующие локальные репозитории.
Можно ли это сделать?
Ответы
Ответ 1
Создайте новые пустые проекты в GitLab для каждого из ваших локальных репозиториев, которые вы хотите нажать на GitLab. После создания проекта вы попадете на страницу проекта по умолчанию.
Затем cd в каждый из существующих репозиториев git. Сделайте git remote add origin <your new gitlab repo address>
И затем a git push -u origin master
Вам нужно будет сделать это для каждого вашего репозитория, который вы хотите добавить.
Ваш адрес репо дается вам на странице проекта. Как http и/или ssh. Если на вашем локальном компьютере уже есть источник с именем "origin", вы можете сначала его переименовать. Или вы можете назвать gitlab чем-то другим. Кроме того, если вы хотите нажимать все ветки на gitlab, вы можете сделать git push --all origin
Если вы хотите использовать теги, git push --tags origin
Ответ 2
Решение 2018 года: просто используйте --set-upstream
Предполагая, что вы позаботитесь о написании сценария, который будет выполнять следующие действия для каждого локального репо, кажется, что с Gitlab 10.5 вы можете просто использовать
git push --set-upstream address/your-project.git
Это создаст новый проект на Gitlab, не создавая его вручную на сервере.
Из документации
Нажмите, чтобы создать новый проект
Когда вы создаете новое хранилище локально, вместо того, чтобы идти в GitLab, чтобы вручную создать новый проект, а затем отправлять хранилище, вы можете напрямую передать его в GitLab, чтобы создать новый проект, и все это, не выходя из терминала. Если у вас есть доступ к этому пространству имен, мы автоматически создадим новый проект под этим пространством имен GitLab с его видимостью, установленной по умолчанию как Private (вы можете позже изменить его в настройках проекта).
Это можно сделать с помощью SSH или HTTP:
## Git push using SSH
git push --set-upstream [email protected]:namespace/nonexistent-project.git master
## Git push using HTTP
git push --set-upstream https://gitlab.example.com/namespace/nonexistent-project.git master
После успешного завершения отправки удаленное сообщение укажет команду для установки удаленного и URL-адрес нового проекта:
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:
Ответ 3
Я должен согласиться с вами, что документация для обложек API-интерфейсов Gitlab сторонних приложений не идеальна, однако мне удалось сделать одну из они работают.
Для этого я настроил gitlab-сервер sandbox (GitLab Community Edition 8.0.5) в бродячем поле Ubuntu 14.04.
Теперь обертка API, которую я использовал, this one (python-gitlab от Gauvain Pocentek). Я выбрал это, потому что его хватало достаточно людей (118 на момент написания) и написано на питоне, поэтому переносимость не будет проблемой (мой хост-компьютер - это Windows с cygwin, но я буду использовать синтаксис unix для этого ответа).
Установка с помощью pip
довольно проста:
$ sudo pip install python-gitlab
После установки вам придется изменить конфигурационный файл, который не существует из коробки или, по крайней мере, я не смог его найти (документация не была ясна об этом). Это официальное имя файла .python-gitlab.cfg
, и это тот, который по умолчанию выполняет поиск config.py.
В любом случае, я создал свою собственную версию .python-gitlab.cfg
на основе синтаксиса образца, найденного в проекте github, который выглядит следующим образом:
[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)
Вам нужно будет получить собственный токен из веб-интерфейса (найденный в настройках профиля:: Учетная запись), так как, как указывает README,
Поддерживается только приватная аутентификация по токену (не пользователь/пароль).
После этого позаботится создание проекта, для http
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote project create --name YOUR_PROJECT_NAME
и как это для https
:
$ gitlab -c "PATH/TO/YOUR/.python-gitlab.cfg" --gitlab remote-ssl project create --name YOUR_PROJECT_NAME
Переключатели, используемые выше, можно найти, обратившись к справке:
$ gitlab --help
Теперь, предполагая, что вы позаботились о SSH-ключах (как локально, так и в веб-интерфейсе), и что вы хотите, чтобы имена репо gitlab были такими же, как каталоги в локальном git, тогда немного bash
script, как и следующее, может автоматизировать создание проекта и локальное нажатие репозиториев:
#!/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="[email protected]$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'
Что он делает, это создать проекты gitlab, названные в честь dirnames, найденных во внешнем локальном каталоге git, затем cd
в каждом из них, обновляет начало и затем выполняет push.
Здесь стоит упомянуть, что gitlab преобразует репо-URL в нижний регистр, например sampleRepo001
становится sampleRepo001
в URL-репо; поэтому я конвертирую dirnames в нижний регистр в script.
И, наконец, вот пример запуска script:
![введите описание изображения здесь]()
В качестве напоминания, если вы хотите использовать этот script, тщательно протестируйте его перед тем, как подать заявку на фактический производственный сервер.
Обновление. Я добавил дополнительную информацию о том, как обращаться с HTTPS/SSL.
Ответ 4
Если вы используете nodejs или даже просто понимаете его, модуль node-gitlab отлично работает. На самообслуживаемом экземпляре Gitlab я смог создавать проекты и импортировать репозитории из удаленного репозитория (локального сервера git). Процесс должен быть аналогичным для локального репозитория. Вы можете настроить локальный сервер git на своем компьютере и использовать его как import_url для каждого проекта Gitlab.
Или вы можете написать script, который будет использовать API для создания проекта, а затем переместить каждый репозиторий в соответствующий проект.
псевдокод:
для каждого репо в каталоге:
- Использовать API для создания проекта на gitlab.com
- git удаленное добавление gitlab url-to-gitlab-repo
- git push gitlab --mirror
Ответ 5
git -repo сделал грязные задания для вас. Он также поддерживает GitLab, GitHub и Bitbucket.
1. Установка
apt-get install python-pip
pip install git-repo
вам может понадобиться pip3, если указанная выше команда не работает.
(optional)
apt-get install python3-pip
pip3 install git-repo
2 Конфигурация
2.1 необходимая конфигурация
git repo config
Инструмент командной строки, шаг за шагом, спросит, хотите ли вы настроить битбакет, github, gitlab account, нажмите "y/n" и имя пользователя/пароль соответственно. Если вы не знаете, что это значит, нажмите "n", чтобы пропустить. Файл конфигурации будет создан в ~/.gitconfig
. Возможно, вы захотите изменить его впоследствии.
(необязательно), например, вы можете вручную установить токен в ~/.gitconfig следующим образом:
[gitrepo "gitlab"]
token = xxxxxxx
[gitrepo "github"]
token = xxxxxxx
2.2 лучший ярлык
добавьте следующие строки в ~/.gitconfig.
[alias]
hub = repo hub
lab = repo lab
почему?
Потому что теперь вы можете просто использовать shortcut
git lab clone/howto
git hub clone/howto
в будущем.
Примечание: вам нужно authentication
клонировать private
репозитории
2.3 (необязательно) добавление личных прав справа
cd ~/.ssh
посмотрите, есть ли у вас файл id_rsa.pub
. pub
означает общедоступный файл, и я рекомендую вам всего copy
весь контент и paste
на gitlab.com public ssh webpage.
Done.
Вам не следует показывать другим о соответствующем файле id_rsa
, который является вашим ключом для доступа к репозиторию gitlab. Другой клиент/компьютер, имеющий id_rsa
, с разрешением chmod 600 id_rsa
, сможет управлять репозиторием.
если вы не видите id_rsa.pub
, вы можете сгенерировать его, используя:
ssh-keygen -t rsa
Нажмите enter
, чтобы оставить его по умолчанию. Теперь вы можете видеть id_rsa.pub
и id_rsa
внутри ~/.ssh. Если вы используете другое имя, отличное от id_rsa, вы должны изменить файл ~/.ssh/config следующим образом:
# private account
Host github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
3. git -repo Использование
когда вы начинаете новый проект, вы хотите создать новый
хранилище, из GitLab, чтобы нажать на:
git lab create <username>/howto
конечно, вы можете удалить, перечислить репозитории или сделать другие вещи.
git lab delete <username>/howto
git lab list <username>
git lab clone <username>/howto
git clone [email protected]:<username>/howto
Практический пример
Предполагая, что вы создали локальный каталог myproject
с git, установленным на некоторое время. Теперь вы хотите загрузить в GitLab.
создать удаленное репо в gitlab. Вы увидите имя пользователя /myproject на странице gitlab.
git lab create username/myproject
Предполагая, что в локальном каталоге myproject есть файл .git
cd myproject
свяжите локальный каталог с удаленным репозиторией gitlab.com.
git lab add username/myproject
загрузить каталог myproject на gitlab.com
git push -u gitlab master
сделать