cara mengatur nama pengguna dan kata sandi untuk repositori git yang berbeda?
17
─[$] cat ~/.gitconfig
[user]
name = Shirish Agarwal
email = [email protected]
[core]
editor = leafpad
excludesfiles = /home/shirish/.gitignore
gitproxy = \"ssh\" for gitorious.org
[merge]
tool = meld
[push]
default = simple
[color]
ui = true
status = auto
branch = auto
Sekarang saya ingin meletakkan kredensial git saya untuk github, gitlab dan gitorious sehingga setiap kali saya tidak harus mencari kredensial di browser. Bagaimana ini bisa dilakukan sehingga otomatis?
Pendekatan umum untuk menangani otentikasi git adalah mendelegasikannya ke SSH. Biasanya Anda menetapkan kunci publik SSH di repositori jarak jauh ( mis. Pada GitHub ), dan kemudian Anda menggunakannya kapan pun Anda perlu mengotentikasi. Anda dapat menggunakan agen kunci tentu saja, baik ditangani oleh lingkungan desktop Anda atau secara manual dengan ssh-agentdan ssh-add.
Untuk menghindari keharusan menentukan nama pengguna, Anda dapat mengonfigurasinya di SSH juga, di ~/.ssh/config; misalnya saya punya
Host git.opendaylight.org
User skitt
dan kemudian saya bisa mengkloning menggunakan
git clone ssh://git.opendaylight.org:29418/aaa
(perhatikan tidak adanya nama pengguna di sana).
Menggunakan gitcredentials
Jika pendekatan SSH tidak berlaku ( misalnya Anda menggunakan repositori yang diakses melalui HTTPS), git memang memiliki caranya sendiri dalam menangani kredensial, menggunakan gitcredentials(dan biasanya git-credential-store). Anda menentukan nama pengguna Anda menggunakan
(tentukan --globaljika Anda ingin menggunakan pengaturan ini di mana-mana).
Kemudian saat pertama kali Anda mengakses repositori, git akan meminta kata sandi Anda, dan itu akan disimpan (secara default di ~/.git-credentials). Akses selanjutnya ke repositori akan menggunakan kata sandi yang disimpan alih-alih meminta Anda.
dapat Anda jelaskan sedikit tentang credential.${remote} dan credential.helper. Apakah ada beberapa dokumentasi yang bisa Anda tunjukkan karena ini adalah pertama kalinya saya membacanya.
shirish
Saya ditautkan ke halaman manual dalam jawaban saya, itulah dokumentasinya. ${remote}adalah protokol dan nama host bagian dari URI yang ingin Anda tiru, helperarahkan ke program pembantu.
tampaknya mirip dengan apa yang steph kitt bagikan di atas.
shirish
2
@ Shirish tidak benar-benar, titik ketiga adalah yang saya butuhkan - opsi untuk menentukan di mana file berada.
Mārtiņš Briedis
@ Shirish; Juga, instruksi Kitts tidak menentukan un menetapkan kredensial, yang merupakan komponen penting bagi saya karena saya sudah menetapkannya secara global.
SteveJ
Saya juga mengalami kesulitan dengan ini karena tidak seolah-olah semua repositori git. Anda akan dapatkan dari sumber / toko yang sama. Yang kedua lebih baik tetapi jauh lebih menyebalkan untuk bekerja dalam kenyataan. Masih terima kasih sudah berbagi. @SteveJ
credential.${remote}
dancredential.helper
. Apakah ada beberapa dokumentasi yang bisa Anda tunjukkan karena ini adalah pertama kalinya saya membacanya.${remote}
adalah protokol dan nama host bagian dari URI yang ingin Anda tiru,helper
arahkan ke program pembantu.Bagi mereka yang menemukan ini nanti - saya mengalami kesulitan dengan ini dan akhirnya membuatnya bekerja
https / credentials.helper / Ubuntu
git config --global --unset credentials.helper
git config --unset credential.helper
Buat file kredensial untuk setiap repo: (di dalam setiap repo)
Bukan mengatakan itu adalah cara terbaik atau satu-satunya cara - tetapi itu berhasil bagi saya setelah beberapa jam yang membuat frustrasi.
sumber