Setelah menggunakan 2FA (Two-factor authentication) di Gitlab, user tidak bisa lagi langsung menggunakan URL https://gitlab-url/NAMA/repository.git untuk cloning ataupun push, contoh
git clone https://gitlab.jaranguda.com/tommy/gateway.git Password for 'https://tommy@gitlab.jaranguda.com': remote: HTTP Basic: Access denied remote: You must use a personal access token with 'read_repository' or 'write_repository' scope for Git over HTTP. remote: You can generate one at https://gitlab.jaranguda.com/profile/personal_access_tokens
Solusi
ada dua langkah untuk mengatasi masalah diatas.
1. Generate token user
Buka https://gitlab-url/profile/personal_access_tokens
, buat token baru, yang perlu diisi
name read_repository write_repository
kedua permission tersebut dibutuhkan agar yang menggunakan token bisa membaca/tulis kedalam repository.
klik Create Personal Token
copy personal access token tersebut, contoh diatas JRcpp_yV-gVLbc9o8H1R
, code tersebut hanya ditampilkan sekali.
2. Buat Format URL
Bila sebelumnya anda menggunakan
git clone https://gitlab.jaranguda.com/tommy/gateway.git
ubah menjadi format https://oauth2:PERSONAL-ACCESS-TOKEN@URL-GITLAB/USER/repository.git
git clone https://oauth2:JRcpp_yV-gVLbc9o8H1R@gitlab.jaranguda.com/tommy/gateway.git
untuk repository yang telah di buat sebelumnya. Pindah ke folder project anda (contoh /home/jaranguda/git/gateway), lalu ubah file .git/config
pada bagian URL
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = https://gitlab.jaranguda.com/tommy/gateway.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
menjadi
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = https://oauth2:JRcpp_yV-gVLbc9o8H1R@gitlab.jaranguda.com/tommy/gateway.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
pengaturan ini hanya untuk yang menggunakan https
, untuk yang menggunakan SSH
, biasanya dengan format git@URL/USER/REPOSITORY.git
tidak perlu dilakukan perubahan.