Bagaimana saya memastikan Git tidak meminta nama pengguna dan kata sandi GitHub saya?

172

Saya bekerja dengan repo di GitHub dan setiap kali saya mencoba mendorong sesuatu, ia meminta nama pengguna dan kata sandi GitHub saya. Saya tidak ingin itu melakukan itu.

Saya mencoba instruksi tentang pengaturan email Anda di Git , yaitu mengatur variabel Git github.user dan github.token, tetapi itu tidak ada bedanya.

Saya tidak mengerti mengapa ini terjadi.

picardo
sumber
Anda perlu men
Piotr Usewicz

Jawaban:

33

Anda perlu mengatur ssh-agent yang hanya perlu Anda otentikasi satu kali. Lihat jawaban ini di SO untuk howto.

Benjamin Bannier
sumber
1
Tetapi solusi ini untuk frasa ssh-family. Masalahnya adalah git menggunakan "git push" yang tidak memicu ssh-agent, saya kira. (Saya sudah melakukan ini, jadi saya tahu itu tidak berhasil.)
picardo
2
@picardo: Saya sudah melakukan ini, dan itu memang berhasil.
Daenyth
213

Punya masalah yang sama hari ini: Saya mengacaukan semuanya dalam copy pekerjaan saya, jadi saya memutuskan untuk mengganti nama direktori dan mengkloning proyek saya lagi dari github. Tetapi setelah melakukan itu, saya harus memasukkan kata sandi untuk melakukan permintaan tarikan / push, alih-alih memasukkan frasa sandi satu kali seperti dulu.

Itu karena hari ini saya menggunakan protokol https untuk mengkloning proyek! Untuk memeriksa protokol apa yang Anda gunakan jalankan saja

git config -l

dan lihat baris yang dimulai dengan 'remote.origin.url'.

Untuk beralih protokol:

git config remote.origin.url [email protected]:the_repository_username/your_project.git

the_repository_usernamedan your_projectharus diganti dengan nama repositori yang sesuai dan pemilik repositori itu. Nama pengguna akan menjadi milik Anda jika Anda memiliki repositori, atau nama pengguna pemilik repositori.

Sergio Morstabilini
sumber
5
Itu berhasil untuk saya. Satu hal adalah url saya tidak mengandung nama pengguna saya tetapi alamat repo seperti yang muncul di github:[email protected]:some-user/repo-name.git
B Seven
1
Catatan: Google membawa saya ke sini. Saya memiliki remote.origin.urlset ke metode https dan bahkan tidak melihat ada metode httpsvs. sshURL ini membantu saya melihat yang sudah jelas: help.github.com/articles/…
Chris K
Apakah ada cara untuk memasukkan kata sandi juga?
zishe
T untuk mereka yang memiliki pengetahuan git: Adakah perbedaan (atau preferensi) antara yang git config remote.origin.url ...digunakan di atas, vs git remote set-url origin ...?
Daryn
Saya tidak tahu cara menghapus asal yang salah seperti itu. Jawabannya adalah:git remote rm origin
Vacilando
30

Jika Anda menggunakan HTTPS alih-alih SSH, Anda dapat mengikuti ini:

  1. Temukan URL jarak jauh Anda (remote.origin.url) dengan

    git config -l
    

    terima kasih kepada Sergio Morstabilini

  2. URL jarak jauh Anda akan seperti ini: https: // {USERNAME} @ github.com / {USERNAME} / {REPONAME} .git

  3. Jalankan perintah ini:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    
Keliru
sumber
2
nama pengguna saya sendiri mengandung @, tidak berfungsi untuk saya.
coding_idiot
Tetapi jika tidak (Anda tidak perlu menggunakan email Anda) itu berfungsi dengan baik! Terima kasih.
Killah
4
Jika nama pengguna Anda menyertakan @, Anda perlu menyandi-URL-nya. meyerweb.com/eric/tools/dencoder
Tim Bodeit
1
Anda harus menghilangkan kata sandi Anda untuk alasan keamanan.
zygimantus
3
Waspadalah, kata sandi akan disimpan dalam teks biasa di dalam .git/configfile!
Amro
26

Saya lebih suka menggunakan HTTPS, saya merasa lebih mudah dan lebih aman daripada mengatur kunci ssh.

Menggunakan HTTPS, Anda dapat mencegah git dari meminta nama pengguna Anda untuk remote github dengan yang berikut:

git config --global url."https://[email protected]".insteadOf "https://github.com"

Dan Anda setidaknya dapat mengurangi frekuensi git meminta kata sandi Anda dengan:

git config --global credential.helper 'cache --timeout=28800'

Di mana 28800 adalah 8 jam. Saya menggunakan pengaturan ini untuk memasukkan kata sandi saya hanya sekali, ketika saya memulai hari kerja saya.

Setelah itu Anda akan memiliki entri ini di dalam blog Anda ~/.gitconfig

[url "https://[email protected]"]
    insteadOf = https://github.com

[credential]
    helper = cache --timeout=28800

Sumber:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config

stefanmaric
sumber
6

Ketika Anda mengatur kunci ssh untuk github, jika itu bukan kunci default Anda, Anda perlu menambahkan bagian ke ~/.ssh/config

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa
Daenyth
sumber
6

Jika Anda menggunakan Windows dengan HTTPS, coba Git Credential Store - ia menggunakan Windows Credential Store untuk menyimpan nama dan kata sandi Anda.

Windows Credential Store for Git
This application is a small helper app designed to follow the 
git credentials API as defined by the Git Documentation.

Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.

Kemudian pada saat Anda memasukkan nama dan kata sandi Anda itu akan mengingatnya untuk Anda.

Brian Burns
sumber
1
Terima kasih. Proyek ini berganti nama menjadi Git-Credential-Manager-for-Windows .
Michael S.
5

Juga, jika Anda ingin dimintai kata sandi setiap saat, tetapi tidak hanya nama pengguna Anda, maka Anda mengonfigurasi remote sebagai HTTPS dengan nama pengguna .. Seperti ini ..

git config remote.origin.url https://[email protected]/repo_owner/repo_name

Setelah ini, Anda akan dimintai kata sandi setiap saat, tetapi bukan nama pengguna Anda.

Inilah yang saya suka, karena saya suka mengetik kata sandi github sebelum berbagi dengan dunia.

David Jeske
sumber
2

Hal-hal sedikit berbeda jika Anda menggunakan auth 2-faktor seperti saya. Karena saya tidak menemukan jawaban yang baik di tempat lain, saya akan menempel di sini sehingga mungkin saya bisa menemukannya nanti.

Jika Anda menggunakan otentikasi 2 faktor, maka menentukan nama pengguna / kata sandi tidak akan berfungsi - Anda mendapat akses ditolak. Tetapi Anda dapat menggunakan token akses aplikasi dan menggunakan pembantu kredensial git untuk men-cache itu untuk Anda. Berikut ini tautan terkait:

Dan saya tidak ingat di mana saya melihat ini tetapi ketika Anda diminta untuk Nama Pengguna Anda - di situlah Anda menempel token akses aplikasi. Kemudian biarkan kata sandi kosong. Bekerja di mac saya.

John Berryman
sumber
2

gunakan SSH

Untuk mencegah GitHub meminta kata sandi saat mendorong, idealnya Anda harus menggunakan SSH ( [email protected]:...) alih-alih URL HTTPS ( https://github.com/...) dan menambahkan kunci SSH Anda ke akun GitHub Anda . Lihat: URL jarak jauh mana yang harus saya gunakan?

GitHub - Klon dengan SSH

penolong kredensial

Kalau tidak, jika Anda benar-benar perlu menggunakan HTTPS, untuk men-cache kata sandi GitHub Anda di Git , Anda harus menggunakan penolong kredensial untuk memberi tahu Git untuk mengingat nama pengguna dan kata sandi GitHub Anda setiap kali berbicara dengan GitHub.

  • Mac: git config --global credential.helper osxkeychain( osxkeychain helperwajib),
  • Windows: git config --global credential.helper wincred
  • Linux dan lainnya: git config --global credential.helper cache

.netrc

Metode lain adalah menggunakan konfigurasi pengguna / kata sandi Anda di ~/.netrc( _netrcpada Windows), mis

machine github.com
login USERNAME
password PASSWORD

OAuth

Gunakan token OAuth ( Token API Pribadi ) untuk mendorong perubahan, mis

git push https://[email protected]/foo/bar

Terkait:

kenorb
sumber
1

Jika Anda menggunakan Windows, Anda dapat menggunakan:

$ git config --global credential.helper wincred

Anda hanya perlu masuk sekali lagi dan kemudian git akan mengingatnya.

William Earl Cheaqui
sumber
1

Meminta nama pengguna itu mengganggu saya, tetapi meminta kata sandi itu bagus karena memastikan Anda benar-benar ingin go public dengan perubahan Anda ...

Jadi saya hanya menambahkan ini ke ".gitconfig" saya

[url "https://[email protected]"]
    insteadOf = https://github.com
ViToni
sumber
0

Gunakan Git Credential Manager untuk Windows , jika Anda menggunakan Windows.

Proyek ini meliputi :

  • Penyimpanan kata sandi aman di Windows Credential Store
  • Dukungan otentikasi multi-faktor untuk Layanan Tim Visual Studio
  • Dukungan otentikasi dua faktor untuk GitHub
  • Akses Token Pribadi dan dukungan penggunaan untuk Layanan Tim Visual Studio dan GitHub
  • Dukungan mode non-interaktif untuk Layanan Tim Visual Studio yang didukung oleh Azure Directory
  • Otentikasi Kerberos untuk Team Foundation Server
  • Pengaturan opsional untuk optimasi agen bangunan

Cukup unduh versi terbaru dan instal.

Cara Penggunaan

Kamu tidak. Ini secara ajaib bekerja ketika kredensial diperlukan.

Jalal
sumber