Git meminta nama pengguna setiap kali saya menekan


676

Setiap kali saya mencoba mendorong repo git saya meminta keduanya username & password.

Saya tidak memiliki masalah dalam memasukkan kembali kata sandi saya setiap kali tetapi masalahnya adalah memasukkan nama pengguna. Saya gunakan httpsuntuk mengkloning repositori saya.

Jadi, bagaimana saya bisa mengkonfigurasi git sehingga tidak meminta usernamemasing-masing git push.

Saya baru mengenal linux tetapi IIRC di windows git pushhanya meminta kata sandi.



@Wug: Tapi saya tidak ingin menyimpan kata sandi. Saya hanya ingin menyimpan nama pengguna.
RanRag

4
coba ikuti arahan itu dan hilangkan baris kata sandi.
Wug


ada juga jawaban tentang superuser untuk pertanyaan awal Anda - superuser.com/questions/847181/…
dk14

Jawaban:


975

Edit (oleh @ dk14 seperti yang disarankan oleh moderator dan komentar)

PERINGATAN: Jika Anda menggunakan credential.helper storedari jawaban, kata sandi Anda akan disimpan sepenuhnya tidak terenkripsi ("sebagaimana adanya") di ~/.git-credentials. Silakan baca bagian komentar di bawah ini atau jawaban dari bagian "Tertaut", terutama jika majikan Anda tidak memiliki toleransi terhadap masalah keamanan.

Meskipun diterima, itu tidak menjawab pertanyaan OP yang sebenarnya tentang menghilangkan nama pengguna saja (bukan kata sandi). Untuk pembaca dengan masalah yang tepat, jawaban @ grawity mungkin berguna.


Jawaban asli (oleh @Alexander Zhu):

Anda dapat menyimpan kredensial Anda menggunakan perintah berikut

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

Saya juga menyarankan Anda untuk membaca
$ git help credentials


161
Peringatan, tidak ada keamanan dalam metode ini. Kata sandi Anda disimpan sebagai teks biasa.
Mark Lakata

13
Anda dapat menemukan cara yang lebih baik untuk mencapai keamanan di sini - stackoverflow.com/a/28104587/1809978
dk14

4
@MarkLakata - Tolong beritahu saya bagaimana saya bisa membatalkan perintah dalam jawaban ini? Setelah saya membatalkannya, saya akan menggunakan metode aman untuk menyimpan kredensial.
MasterJoe2

25
@ testerjoe2 trygit config --unset credential.helper
dk14

1
Jangan lupa untuk mengatur batas waktu, standarnya adalah 15 menit - Tetapkan nilainya menjadi 30 juta untuk memiliki waktu sekitar 1 tahun. Ditemukan di sini: stackoverflow.com/a/35942890/1579667
Benj

181

Anda dapat melakukannya di .git/configfile repositori lokal Anda. File ini berisi bagian yang disebut 'remote' dengan entri yang disebut 'url'. Entri 'url' harus berisi tautan https repositori yang sedang Anda bicarakan.

Saat Anda mengawali 'url' host dengan nama pengguna Anda, gitseharusnya tidak lagi meminta nama pengguna Anda. Ini sebuah contoh:

url = https://username@repository-url.com

5
Jika Anda menggunakan karakter khusus dalam nama pengguna atau pw maka Anda harus menghindarinya. Lihat en.wikipedia.org/wiki/Percent-escape untuk karakter pelarian yang tepat. misalnya "! @ #" [tanpa kutipan] akan diganti dengan "% 21% 40% 23". Lihat juga "Daniel Lerch" jawaban di bawah ini
nsof

1
Apakah orang lain yang mengerjakan repositori yang sama akan melihat nama pengguna saya?
CodyBugstein

17
Ini harus menjadi jawaban yang benar untuk pertanyaan OP, yaitu "bagaimana cara mempertahankan nama pengguna, BUKAN kata sandi". Tidak hanya jawaban ini cara yang tepat untuk mempertahankan nama pengguna, tetapi juga menghindari kemungkinan risiko keamanan git config credential.helper store.
RayLuo

Saya bersyukur untuk jawaban ini dan mencoba cara ini, tetapi masih menanyakan saya setiap waktu (v 2.1.4) - mencoba remoteurl dengan name@gitlab.com DAN name%40mailaddress.com@gitlab.com - selalu memintausername for https://gitlab.com:
eli

1
Saya mencoba ini dan mendapatkanunable to access 'https://<me>@bitbucket.org:<x>/<y>.git/': Illegal port number
Ian Grainger

118

Mengotentikasi secara permanen dengan repositori Git

Jalankan perintah berikut untuk mengaktifkan caching kredensial:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

Gunakan juga harus menentukan caching berakhir

git config --global credential.helper "cache --timeout 7200"

Setelah mengaktifkan cache kredensial, itu akan di-cache selama 7200 detik (2 jam) .


Baca kredensial Documents

$ git help credentials

Saya menetapkan batas waktu ke 7200. Tapi kemudian saya berpikir untuk mengaturnya ke 5 untuk pengujian. Jadi saya mengaturnya ke 5, tetapi kemudian ketika saya mencoba untuk mendorong lagi setelah 30 detik, tetapi saya tidak diminta untuk nama pengguna atau kata sandi.
Buttle Butkus

Mungkin kredensial Anda tidak disimpan secara global.
Jay Patel

Mengenai keamanan, layak untuk merujuk dokumen: "Perintah ini menyimpan kredensial dalam memori untuk digunakan oleh program Git di masa depan. Kredensial yang disimpan tidak pernah menyentuh disk, dan dilupakan setelah batas waktu yang dapat dikonfigurasi." git-scm.com/docs/git-credential-cache
mloskot

2
bukankah perintah git config credntial.helper storeitu berbahaya, yang bertanggung jawab untuk menyimpan plaintext-credentials dalam file ~ / .git-credentials? Saya pikir (dan dalam pengalaman saya) perintah ... cache ...- sudah cukup: git config --clogal credential.helper 'cache --timeout 7200'Ini menciptakan dir: ~/.git-credential-cachedengan file cache di dalamnya Jadi, jalankan saja perintah ini dan BUKAN perintah "... store" -command
eli

Tidak bekerja untuk saya. Masih meminta kata sandi setiap waktu
Ian Grainger

75

Tambahkan kunci SSH baru seperti yang dijelaskan dalam artikel ini di GitHub .

Jika Git masih menanyakan nama pengguna & kata sandi Anda, coba ubah https://github.com/ke git@github.com:dalam URL jarak jauh:

$ git config remote.origin.url 
https://github.com/dir/repo.git

$ git config remote.origin.url "git@github.com:dir/repo.git"

19
Ini harus menjadi jawaban yang tepat! Menyimpan kredensial Anda sangat tidak aman. Jika saya memiliki kunci SSH di tempat, itu meminta saya kredensial saya hanya karena saya tidak memiliki URL yang benar seperti diuraikan di sini.
Alexis Wilke

2
atau Anda dapat menggunakangit config remote.origin.url "ssh://git@yourRepoHost/yourRepoName.git"
ndarkness

1
git config remote.origin.url git@gitlab.com: adammajewski / ray-backward-iteration.git
Adam

1
Terima kasih, ini adalah jawaban yang saya cari.
Yupeng Tang

50

Cara termudah yang saya temukan adalah dengan perintah ini:

git config --global credential.https://github.com.username <your_username>

Ini berfungsi berdasarkan situs demi situs dan mengubah konfigurasi global git Anda.

Untuk melihat perubahannya, gunakan:

git config --global --edit

1
Untuk beberapa alasan ini adalah satu-satunya metode yang bekerja untuk saya. Terima kasih!
mathetes

Apakah metode ini aman? Apakah kata sandi github hanya disimpan di komputer lokal dan tidak didorong ke github?
Akin Hwan

Saya tidak tahu mengapa ini bukan jawaban yang disetujui, perintahnya bekerja dengan sempurna dan merespons sepenuhnya dan hanya untuk pertanyaan: menyimpan nama pengguna, bukan kata sandi. Ben terima kasih!
AmaelH

Anda juga dapat menjalankan: [git config --global credential.helper 'cache --timeout = 3600'] Jadi kata sandi Anda akan disimpan selama satu jam setiap kali
obenda

31

Jika Anda menggunakan https alih-alih ssh, Anda dapat mengedit "url" .git/configseperti yang dikatakan user701648, tetapi jika mau, Anda dapat menambahkan juga kata sandi:

url = https://username:password@repository-url.com

1
Bagaimana jika ada yang @dimasukkan dalam kata sandi saya? url = https://username:abc@123@repository-url.comIni memberi saya kesalahan ituCould not resolve host: @123@git.com
Rahul Mankar

Bagian ini usernametampaknya diabaikan, ketika server mengalihkan (seperti dari FOO ke FOO.git).
Mikhail T.

22

Anda dapat mengatur nama pengguna Anda untuk semua repositori di situs tertentu dengan meletakkan sesuatu seperti yang berikut ini di file konfigurasi Git Anda. Anda ingin mengubah " https://example.com " dan "saya" ke URL aktual dan nama pengguna Anda yang sebenarnya.

[credential "https://example.com"]
    username = me

(Ini langsung dari "kredensial bantuan git")


16

Mengubah karya repo kloning:

git remote set-url origin git@github.com:gitusername/projectname.git

Menggunakan kredensial yang di-cache berfungsi, dan mengatur periode waktu habis membuat hal-hal kurang mengganggu. Jika Anda menggunakan pembantu kredensial Windows, itu harus menjadi metode termudah (terutama jika SSH diblokir).


Ini adalah jawaban yang tepat untuk GitHub (yang secara khusus ditanyakan pertanyaannya ... (tidak yakin mengapa Anda dipilih)
Tim Groeneveld

12

Pastikan Anda menggunakan SSH, bukan http. Periksa jawaban SO ini .


3
Tetapi saya harus menggunakan httpkarena di universitas saya sshdiblokir oleh departemen sys-admin.
RanRag

Maka mungkin tautan ini akan membantu Anda.
gkris

Ada halaman bantuan GitHub resmi tentang ini sekarang. Apa yang terjadi pada saya adalah saya mengkloning salah satu repo saya sendiri sebelum masuk sehingga tidak mengenali saya dan default ke HTTPS saya percaya. help.github.com/articles/changing-a-remote-s-url
anon58192932

12

git config --global credential.helper cache


1
Ini adalah jawaban yang lebih baik di Linux.
Larry

9

Selain jawaban pengguna701648, Anda dapat menyimpan kredensial Anda di folder rumah Anda (global untuk semua proyek), bukan folder proyek menggunakan perintah berikut

$ git config --global credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

9

Ketika saya hanya git pull, git pull xxx asal, git meminta nama pengguna & kata sandi.

git config credential.helper store

berhasil.


9

Cara termudah adalah membuat ~/.netrcfile dengan konten berikut:

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(seperti yang ditunjukkan di sini: https://gist.github.com/ahoward/2885020 )

Anda bahkan dapat menutup izin pada file ini sehingga tidak ada yang dapat membaca kata sandi Anda dengan mengetik:

chmod 600 ~/.netrc

6

Jika Anda menggunakan versi SSH , Anda tidak akan memiliki masalah dengan kata sandi. Hanya satu kali Anda membuat kunci SSH , untuk memberi tahu git, bahwa pc ini akan bekerja dengan akun github ini dan tidak pernah bertanya kepada saya lagi tentang akses apa pun (untuk pc ini).

Cara Menghasilkan SSH untuk Github


4

Untuk menghindari memasukkan nama pengguna, tetapi masih diminta untuk memasukkan kata sandi, maka Anda cukup mengkloning repositori Anda termasuk nama pengguna:

git clone user_name@example.gitrepo.com/my_repo.git


3

ssh+ key authenticationadalah cara yang lebih andal daripada https+credential.helper

Anda dapat mengonfigurasi untuk menggunakan SSH alih-alih HTTPS untuk semua repositori sebagai berikut:

git config --global url.ssh://git@github.com/.insteadOf https://github.com/

url.<base>.insteadOfdidokumentasikan di sini .


2

Metode cepat

dapatkan url git Anda ketika di dalam direktori kerja:

git config remote.origin.url

kemudian :

git config credential.helper store

git push "url of your git"

akan menanyakan nama pengguna dan kata sandi terakhir kali

selesai


1

Anda bisa berlari

git config --global credential.helper wincred

setelah menginstal dan masuk ke GIT untuk windows di sistem Anda.


Tidak melihat kata linux dalam kueri. Saya buruk
cyperpunk

1

(Hanya Untuk Mac OS)

untuk Windows dan Linux silakan merujuk ke tautan dokumentasi Github yang disebutkan di bawah ini.

Dari Dokumentasi Github: Tautan Dokumentasi

Caching kata sandi GitHub Anda di Git

  • Anda perlu Git 1.7.10 atau yang lebih baru untuk menggunakan bantuan kredensial osxkeychain.

    untuk memeriksa versi Git Anda: git --version

  • untuk mengetahui bantuan osxkeychain sudah diinstal:

    git credential-osxkeychain

    jika Anda mendapatkan respons berikut maka Anda sudah menginstalnya dan siap digunakan di mac Anda:

    > Usage: git credential-osxkeychain <get|store|erase>

    jika Anda tidak mendapatkan respons seperti yang ditunjukkan di atas maka Anda dapat menginstalnya dengan menjalankan perintah berikut:

    git credential-osxkeychain

  • untuk memberi tahu git untuk menggunakan osxkeychain secara global untuk kredensial git:

    git config --global credential.helper osxkeychain

    Ini akan meminta sekali sebelum menyimpan kredensial ke gantungan kunci .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.