Перейти к содержанию

▍Gitlab sync

Зачем?

С 13 августа 2021 года GitHub убрал возможность использовать личный пароль для получения доступа к репозиториям по https из терминала. Вместо пароля от аккаунта на github.com при выполнении команд git clone, git fetch, git pull, или git push теперь необходимо указывать персональный токен доступа. Такое решение было принято с целью защиты пользователей и предотвращения использования злоумышленниками похищенных или взломанных паролей.

root@1ae80a54c328:/# ssh-keygen -t ed25519 -C "[email protected]"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_ed25519
Your public key has been saved in /root/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:SglmKF/zN45racTa/BcvZa5ZmogchxPortGCr4j7kqk [email protected]
The key's randomart image is:
+--[ED25519 256]--+
|     ..o.        |
|    .o.  . . o   |
|   ..... ..   ...|
|   ..o..o . . o..|
|    .oo S+   + . |
|    .. .o o = ..o|
|     +.. . o B ++|
|    + . ..+.=.oo*|
|   . .    +=. o++|
+----[SHA256]-----+
gitlab-rake gitlab:mirror:add --url='[email protected]:imartinez/privateGPT.git' --mirror-user='daffinru' --mirror-password='' --mirror-ssh-key='/root/.ssh/id_ed25519'

gitlab-rake gitlab:mirror:update

[email protected]:imartinez/privateGPT.git

Как сменить адрес удалённого репозитория

Если у вас уже есть репозиторий, синхронизация которого с удалённым сервером происходила по протоколу https, а теперь вы хотите использовать ssh, вам необходимо будет сменить адрес удалённого репозитория, выполнив следующую команду в локальном репозитории:

git remote set-url origin git@serviceurl:username/reponame.git
где:

serviceurl - url сервиса, на котором находится удалённый репозиторий (например, github.com или gitlab.com).

username - ник владельца репозитория.

reponame - название репозитория.

Проверить, что изменения прошли корректно, можно путём выполнения команды

git remote -v 
в локальном репозитории. Если в выводе содержатся строки вида:

origin  git@serviceurl:username/reponame.git (fetch)
origin  git@serviceurl:username/reponame.git (push)
с путями до вашего удалённого репозитория, значит, всё сделано правильно.

К началу