Mengapa Github meminta nama pengguna / kata sandi saat mengikuti instruksi di layar dan mendorong repo baru?

298

Saya adalah pemilik organisasi di github dan baru saja membuat repo dan mencoba mendorong tetapi saya mengalami masalah di mana ia meminta nama pengguna saya meskipun saya dapat SSH:

$ ssh -T [email protected]
Hi Celc! You've successfully authenticated, but GitHub does not provide shell access.
$ git add .
$ git commit -m 'first commit'
[master (root-commit) 3f1b963] first commit
 6 files changed, 59 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 main.js
 create mode 100644 package.json
 create mode 100644 readme.markdown
 create mode 100644 views/index.ejs
 create mode 100644 views/layout.ejs
$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git push -u origin master
Username for 'https://github.com':

Apa yang saya lakukan salah? Ini belum pernah terjadi pada saya sebelumnya tetapi saya baru-baru ini juga ditingkatkan ke git 1.7.10.3.

Kit Sunde
sumber

Jawaban:

662

Jangan gunakan HTTP, gunakan SSH saja

perubahan

https://github.com/WEMP/project-slideshow.git 

untuk

[email protected]:WEMP/project-slideshow.git

Anda dapat melakukannya dalam .git/configfile

Hugo
sumber
1
Terima kasih! Saya baru saja mengetahui hal ini setelah membaca stackoverflow.com/a/10126412/29347 , saya tidak berpikir github biasanya memberi saya repo jarak jauh sebagai HTTPS yang menyebabkan beberapa kebingungan.
Kit Sunde
2
Anda dapat mengubah opsi ini dengan mengklik tombol tempat Anda menyalin url klon Anda.
Derek Adair
Untuk MacOS. Masalah saat Anda meningkatkan ke makro terbaru. stackoverflow.com/a/39616339/1445102
1Rhino
12
Anda juga dapat melakukannya git remote set-url origin [email protected]:user/repo.git, sebagaimana dirinci dalam stackoverflow.com/questions/10126381/…
Dan Akhirnya
54

Saya memiliki masalah yang sama dan bertanya-tanya mengapa itu tidak terjadi dengan repo bitbucket yang dikloning dengan https. Melihat ke dalamnya sedikit saya menemukan bahwa konfigurasi untuk repo BB memiliki URL yang menyertakan nama pengguna saya. Jadi saya secara manual mengedit konfigurasi untuk repo GH saya seperti begitu dan voila, tidak ada lagi nama pengguna. Saya di Windows.

Edit your_repo_dir/.git/config(ingat: .gitfolder disembunyikan)

Perubahan:

https://github.com/WEMP/project-slideshow.git

untuk:

https://*username*@github.com/WEMP/project-slideshow.git

Simpan file. Lakukan git pulluntuk mengujinya.

Cara yang tepat untuk melakukan ini mungkin dengan menggunakan perintah git bash untuk mengedit pengaturan, tetapi mengedit file secara langsung tampaknya tidak menjadi masalah.

Sean
sumber
Itu poin yang baik, jika Anda memasukkan nama pengguna itu akan ditangani oleh gantungan kunci OS (setidaknya itu harus di OSX, dan tampaknya di Windows juga). Tidak ada perbedaan antara mengedit file dengan notepad atau dengan vim / emacs / nano / vi, saya tidak akan terlalu khawatir tentang keangkuhan teknis itu hanya file teks biasa.
Kit Sunde
20

Ini jawaban resmi untuk ini:

Jika Git meminta nama pengguna dan kata sandi setiap kali Anda mencoba berinteraksi dengan GitHub, Anda mungkin menggunakan URL klon HTTPS untuk repositori Anda.

Menggunakan URL jarak jauh HTTPS memiliki beberapa keuntungan: lebih mudah diatur daripada SSH, dan biasanya bekerja melalui firewall dan proksi yang ketat. Namun, itu juga meminta Anda untuk memasukkan kredensial GitHub Anda setiap kali Anda menarik atau mendorong repositori.

Anda dapat mengkonfigurasi Git untuk menyimpan kata sandi Anda. Jika Anda ingin mengaturnya, baca semua tentang mengatur caching kata sandi .

Catalin Hritcu
sumber
1
Terima kasih. Saya akan berdebat dengan Github bahwa tidak mudah men-setup jika Anda berakhir di sini (:
ecoologic
Ini adalah jawaban untuk pertanyaan karena pertanyaan itu bertanya, MENGAPA ?
eli
14

Memperbaiki jawaban @ Ianl ,

Tampaknya jika otentikasi 2 langkah diaktifkan, Anda harus menggunakan token alih-alih kata sandi. Anda dapat membuat token di sini .

Jika Anda ingin menonaktifkan prompt untuk nama pengguna dan kata sandi maka Anda dapat mengatur URL sebagai berikut -

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git

Perhatikan bahwa URL memiliki nama pengguna dan kata sandi. Juga .git/configfile tersebut harus menunjukkan pengaturan Anda saat ini.


Pembaruan 20200128:

Jika Anda tidak ingin menyimpan kata sandi dalam file konfigurasi, maka Anda dapat membuat token pribadi dan mengganti kata sandi dengan token. Berikut ini beberapa detailnya .

Akan terlihat seperti ini -

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git
kaushal
sumber
Apakah ini aman? Bisakah seseorang mengakses informasi ini dari komputer saya?
Akaisteph7
Ya, mereka dapat mengakses dari komputer Anda karena mereka disimpan dalam teks biasa dalam .git/configfile
kaushal
11

catatan tambahan:

jika Anda telah menambahkan remote ($ git remote add origin ...) dan perlu mengubah remote tersebut maka lakukan remote remove terlebih dahulu ($ git remote rm origin), sebelum menambahkan kembali URL repo yang baru dan lebih baik (di mana "asal" adalah nama untuk repo jarak jauh).

jadi gunakan contoh aslinya:

$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git remote rm origin
$ git remote add origin https://[email protected]/WEMP/project-slideshow.git
IanI
sumber
4
Anda tidak perlu menghapus remote. Anda cukup mengubah URL:git remote set-url origin https://[email protected]/WEMP/project-slideshow.git
shovavnik
8

Jika Anda menggunakan HTTPS, periksa untuk memastikan bahwa URL Anda benar. Sebagai contoh:

$ git clone https://github.com/wellle/targets.git
Cloning into 'targets'...
Username for 'https://github.com': ^C

$ git clone https://github.com/wellle/targets.vim.git
Cloning into 'targets.vim'...
remote: Counting objects: 2182, done.
remote: Total 2182 (delta 0), reused 0 (delta 0), pack-reused 2182
Receiving objects: 100% (2182/2182), 595.77 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1044/1044), done.
kutu buku yang dibayar
sumber
1
Itu poin yang bagus! Jika Anda salah ketik di URL, Anda akan diminta untuk 'Nama Pengguna' alih-alih diberi tahu bahwa repositori tidak ada.
dmitrii
5

Saya baru saja mendapat email dari admin github.com yang menyatakan sebagai berikut: "Kami biasanya menyarankan orang untuk menggunakan URL HTTPS kecuali mereka memiliki alasan khusus untuk menggunakan protokol SSH. HTTPS aman dan lebih mudah diatur, jadi kami default untuk itu ketika repositori baru dibuat. "

Prompt kata sandi memang menerima detail login normal github.com. Tutorial tentang cara mengatur cache kata sandi dapat ditemukan di https://help.github.com/articles/set-up-git#password-caching . Saya mengikuti langkah-langkah dalam tutorial, dan itu berhasil untuk saya.

Jochen
sumber
4

Karena Anda menggunakan cara HTTPS . HTTPS mengharuskan Anda mengetik akses akun Anda setiap kali Anda mencoba mendorong atau menarik , tetapi ada satu cara juga, yang disebut SSH , dan itu memungkinkan Anda untuk memberitahu git, bahwa saya memberi Anda izin dengan akun saya untuk PC ini, dan tidak pernah bertanya saya lagi tentang akses pengguna . Untuk menggunakannya, Anda harus membuat kunci SSH dan menambahkannya ke akun Github Anda hanya satu kali . Untuk melakukannya, Anda dapat mengikuti langkah-langkah ini

Cara Menghasilkan kunci SSH untuk Github

Hazarapet Tunanyan
sumber