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.

RanRag
sumber
1
Pertanyaan terkait: stackoverflow.com/questions/2233590/…
Wug
@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

Alexander Zhugastrov
sumber
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://[email protected]
MEROSE
sumber
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 [email protected] DAN name%[email protected] - 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://[email protected]': <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
Jay Patel
sumber
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 [email protected]:dalam URL jarak jauh:

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

$ git config remote.origin.url "[email protected]:dir/repo.git"
Lukasz Czerwinski
sumber
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 [email protected]: 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
Ben
sumber
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:[email protected]
Daniel Lerch
sumber
1
Bagaimana jika ada yang @dimasukkan dalam kata sandi saya? url = https://username:abc@[email protected]Ini memberi saya kesalahan ituCould not resolve host: @[email protected]
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")

Alan De Smet
sumber
16

Mengubah karya repo kloning:

git remote set-url origin [email protected]: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).

Layer8Err
sumber
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 .

gkris
sumber
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

Kai Wang
sumber
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>
Yuvi
sumber
9

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

git config credential.helper store

berhasil.

Languoguang
sumber
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
Lebih sederhana
sumber
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

Hazarapet Tunanyan
sumber
4

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

git clone [email protected]/my_repo.git
ManoDestra
sumber
3
  1. $ git config credential.helper store

  2. $ git push / push https://github.com/xxx.git

  3. Kemudian masukkan nama pengguna dan kata sandi Anda.

  4. Selesai
Stephen Tun Aung
sumber
Ini tidak git push/push https://github.com/xxx.githarusgit push https://github.com/xxx.git
Mohsin
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://[email protected]/.insteadOf https://github.com/

url.<base>.insteadOfdidokumentasikan di sini .

Akif
sumber
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

Aominé
sumber
1

Anda bisa berlari

git config --global credential.helper wincred

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

cyperpunk
sumber
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 .

Akash Gandhi
sumber