git mendorong dengan pengguna yang salah dari terminal


112

Saya memiliki masalah dengan git dan terminal saya.

Berikut galeri untuk menunjukkan masalah saya: http://imgur.com/a/6RrEY

Ketika saya mendorong komit dari terminal saya, git mengatakan saya mendorong mereka dengan nama pengguna lain, itu adalah pengguna dari organisasi saya (perusahaan saya) tanpa komit sama sekali dan tampaknya itu bukan milik siapa pun: (lihat galeri foto pertama)

Tapi ini tidak terjadi ketika saya menggunakan Github untuk mac, di feed saya melihat komit didorong sendiri.

Masalahnya juga memengaruhi repositori pribadi saya, terminal saya mengatakan bahwa saya tidak memiliki izin untuk mendorong komit pada repositori tersebut (yang jelas salah) karena mencoba mendorongnya dengan pengguna ini: (periksa gambar kedua galeri)

Tebak apa ? Ini tidak terjadi dengan Github untuk mac juga.

Saya mengubah komputer saya ke yang baru beberapa hari yang lalu, jadi saya mengatur ulang semua kunci ssh saya dari github dan hanya menyisakan yang baru yang dihasilkan oleh Github untuk Mac jadi saya tidak berpikir bahwa ada beberapa kunci pengguna / ssh hantu yang tersembunyi Di suatu tempat, hdd ini baru: (lihat galeri foto ketiga)

File .gitconfig saya semuanya jelas, hanya ada kredensial saya: (periksa galeri foto keempat)

Aku benar-benar tidak mengerti, tolong, StackOverflow, kaulah satu-satunya harapanku.

(Saya minta maaf atas keterampilan Gimp saya yang buruk dan referensi Star Wars)

EDIT: ssh-add -l hanya menampilkan kunci ssh bagus yang dibuat oleh github untuk mac dan saya hanya memiliki satu akun github

EDIT2: ssh -T git@github.com kenali saya sebagai pengguna yang baik.

EDIT3: Setelah beberapa tes, sepertinya terminal saya melakukan komit dengan nama pengguna saya, tetapi mendorongnya dengan yang lain, Github untuk mac melakukan dan mendorong dengan nama pengguna yang baik. Situasi ini terjadi dengan setiap repo yang saya miliki / buat (bahkan yang baru satu).

EDIT4: Dalam repositori pribadi git log --pretty="%h %an %ae"menunjukkan nama pengguna saya yang baik

EDIT5: Tidak ada tanda variabel lingkungan yang akan menimpa kredensial saya di fileenv . Bahkan jika saya mencoba mengatur variabel-variabel itu dengan kredensial yang baik, masalah tetap ada.

EDIT6: Segala sesuatunya berfungsi normal jika saya memaksa pengguna di jalur /.git/configrepositori tetapi saya tidak berpikir itu adalah opsi yang baik:http://USER@github.com/USER/REPO.git

EDIT7: Kami menghapus pengguna git yang mendorong komit untuk saya dan ini membawa kesalahan lain:remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

EDIT AKHIR: Saya menginstal git dengan homebrew, mengetik git config --global push.default simple dan sekarang saya mengambil kredensial saya bahkan tanpa memaksa pengguna. Itu aneh. Terima kasih semuanya atas bantuan Anda, Anda orang-orang hebat!


2
periksa ~/.gitconfigdan $project_root/.git/configfile. Salah satu dari keduanya pasti salah dikonfigurasi untuk nama pengguna.
mu 無

1
Terima kasih atas jawaban Anda ansh0l. ~/.gitconfigjelas dan begitu juga $project_root/.git/config. Sebenarnya saya memiliki masalah ini dengan setiap proyek pribadi, proyek kerja dapat didorong karena pengguna lain ini milik organisasi saya yang memiliki repositori tersebut.
Yinfei

Apakah Anda memiliki banyak akun github? Satu untuk perusahaan, yang lainnya untuk penggunaan pribadi?
mu 無

Tidak, hanya satu untuk semuanya.
Yinfei

1
Solusi yang mengganggu adalah dengan membuat ulang kunci SSH lain. Jika Anda menggunakan kunci SSH Anda saat ini dengan layanan lain, itu tidak ada gunanya.
Eduardo Bautista

Jawaban:


168

Saya baru saja mengalami masalah ini di tempat kerja. Git bawaan yang dikirimkan bersama mac atau datang saat Anda menginstal xcode cache kredensial git di rantai kunci. Perbaikan bagi saya adalah:

mulai akses rantai kunci (mulai sorotan melalui cmd + spasi, ketik gantungan kunci, tekan enter)

Di bawah gantungan kunci di kiri atas, pilih "login" Di bawah kategori di sebelah kiri, pilih "sandi"

cari nama "github" dan hapus.


2
Pastikan Anda menghapus semua entri github di sini & setel konfigurasi login * git config --global user.name <name> * git config --global user.email <email>
Shank_Transformer

Dalam kasus saya, SourceTree mengalami masalah ini. Menghapus item di rantai kunci memperbaikinya!
Shoerob

1
@Shank_Transformer solusi Anda berhasil untuk saya! Terima kasih!
Nazariy

Anda mungkin harus mencari (atau meluncurkan secara langsung) seahorsedi Ubuntu.
gak

3
Saya berhutang budi kepada Anda Pak
Baconbeastnz

46

github mengidentifikasi Anda dengan kunci ssh yang dilihatnya, bukan dengan pengaturan apa pun dari git.

Oleh karena itu, Anda perlu memastikan bahwa kunci ssh akun kerja Anda tidak ada di keyring Anda ketika Anda mencoba mendorong dari akun pribadi Anda dan sebaliknya.

Gunakan ssh-add -luntuk menentukan kunci mana yang ada di keyring Anda, dan ssh-add -d <keyfile>untuk menghapus kunci dari keyring Anda, jika tidak berhasil, hapus kunci ssh 'yang tidak diinginkan' dari ~/.ssh/config.

sumber

NB: Github akan tetap mengidentifikasi komit Anda hanya berdasarkan email.


5
Ini adalah satu-satunya jawaban yang menjelaskan mengapa terus-menerus menggunakan akun github yang salah meskipun saya user.emaildisetel dengan benar. Seandainya saya bisa memberi suara positif lima kali.
Chris

1
dalam kasus saya menghapus kunci ssh bekerja seperti pesonassh-add -D
rPawel

Ini adalah satu-satunya jawaban yang berhasil untuk saya. Terima kasih!!
Edward Hartnett

Satu-satunya pilihan yang berhasil. Tidak masuk akal mengapa git tidak memilih kunci yang tepat. Karena kami menyebutkan file ssh yang harus digunakan dalam konfigurasi.
Revanth Kumar

Ketika saya melakukannya, ssh-add -lsaya mendapatkan jawaban yang tidak membantu. Itu ketik 4096 SHA256:lotsOfGibberish,about40chars (RSA)Saya tidak tahu bagaimana kami informasi ini.
MiguelMunoz

20

Terlepas dari semua opsi hebat yang diberikan oleh pengguna lain, satu-satunya cara untuk memperbaikinya adalah dengan menginstal ulang git sepenuhnya dan mengetik git config --global push.default simpleuntuk menulis ulang kredensial yang baik.


@VonC, meskipun jawaban Anda bagus, itu tidak berhasil sama sekali. Ini adalah satu-satunya solusi yang berhasil untuk saya. Saya ingin tahu apakah ini masalah git atau OSX ...
swilgosz

40
git config --system --unset credential.helperbekerja untuk saya, saya sekarang dimintai kredensial GitHub saya saat push lagi dan dapat memberikan ID pengguna dan kata sandi yang benar.
CodeManX

@CoDEmanX milikmu adalah satu-satunya jawaban yang berhasil untukku. Bagi siapa pun yang menemukan ini, itu karena kami menggunakan 2FA di tempat kerja dengan github dan saya perlu membuat token dari github gui terlebih dahulu dan menggunakannya sebagai kata sandi saya dari baris perintah setelah saya mengatur ulang kredensial lokal saya! lihat https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/ untuk detailnya
vancouver akan

Ini hanya file .gitconfig. Hapus itu atau setel ulang ... Saya menghadapi masalah ini ketika saya mengajukan proyek percobaan untuk wawancara. Sial, itu menyakitkan. Ini dengan file konfigurasi
Girish

git config --system --unset credential.helpertidak berfungsi pada Windows 10 git bash:error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denied
alex

17

Saya menggunakan Windows 10 dan saya menghadapi masalah yang sama hari ini. Dalam kasus saya, kredensial saya untuk pengguna yang berbeda disimpan oleh manajer Kredensial Windows. Jadi menghapus / membatalkan kredensial git dengan perintah di bawah ini, git config --global --unset credential.helper

tidak membantu. Saya harus menghapus entri di Windows secara manual dengan mengikuti cara di bawah ini,

Mulai -> Panel Kontrol ---> Akun Pengguna ---> Manajer kredensial Anda ---> Kredensial Windows

Kemudian cari entri seperti, git: https://github.com dan hapus. Ini berfungsi dengan baik setelah itu.


Terima kasih Gowtham
Balint

Terima kasih, saya tidak pernah mengalami masalah ini sebelumnya di Windows tetapi hari ini saya mengalami masalah ini dan saya senang melihat komentar Anda di sini.
RaKoDev

Anda mengatakan itu "tidak membantu" tetapi jika itu memberi Anda pesan bahwa itu tidak dapat mengunci file konfigurasi maka masalahnya hanya Anda perlu menjalankannya dari Command Prompt yang ditinggikan, seperti yang ditunjukkan dalam komentar di atas .
Stefan

15

sepertinya terminal saya melakukan komit dengan nama pengguna saya, tetapi mendorongnya dengan yang lain

Nama penulis dan pelaku serta email (yang penting untuk GitHub) berasal dari:

git config user.name
git config user.email

Namun, seperti yang disebutkan dalam git configdan git commit-tree, nilai-nilai tersebut dapat diganti oleh variabel lingkungan:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL

Jadi periksa kembali variabel-variabel itu.

Semuanya bekerja kembali secara normal jika saya memaksa pengguna di dalam .git/configrepositori tetapi menurut saya itu bukan opsi yang baik.

Tapi itu harus menjadi solusi yang bagus.
Saat menggunakan url https, saya selalu menentukan pengguna di dalamnya untuk memastikan otentikasi dilakukan dengan pengguna yang tepat.

http://USER@github.com/USER/REPO.git

Terima kasih atas balasan Anda VonC! Sayangnya, git configkredensial saya benar dan tidak ada variabel lingkungan yang disetel dalam /username/.bashrcfile saya ...
Yinfei

@ Yinfei84 meskipun demikian, periksa envoutput ' ' Anda .
VonC

@ Yinfei84 apa yang akan terjadi jika (untuk mengujinya) Anda menetapkan variabel tersebut secara eksplisit, dan mencoba komit dan dorongan. Akankah itu bekerja lebih baik?
VonC

Saya baru saja melakukannya dan masalah terus berlanjut.
Yinfei

2
Maaf jika saya tidak jelas, maksud saya itu berhasil jika saya memaksa pengguna di jalur seperti:http://USER@github.com/USER/REPO.git
Yinfei

9

Solusi sementara dijalankan terlebih dahulu, killall ssh-agentlalu tambahkan kunci ssh yang dibuat untuk akun yang perlu Anda gunakanssh-add ~/.ssh/id_4shameer

Ini akan membantu kita untuk mengerjakan banyak akun github ketika kita akan mendapatkan kesalahan ketik ERROR: Permission to user/repo-git.git denied to username.


1
Saya melakukannya setelah menghapus entri Github apa pun dari gantungan kunci MacOS , dan itu berfungsi dengan sempurna. Dua poin, setelah killall, ssh-agent harus di-restart dengan eval "$(ssh-agent -s)", dan ssh-addperintah harus dijalankan dengan sudo.
arvymetal

7

Jika Anda menggunakan MAC, buka Akses Keychain dan hapus entri pengguna yang tidak Anda inginkan untuk akses git.


4

Solusi bagi saya adalah menambahkan entri di file ~ / .ssh / config saya untuk github. Saya harus melakukan ini karena:

  1. Saya memiliki beberapa akun github dengan kunci yang sama (jangan lakukan ini!)
  2. ketika Anda 'git push' menggunakan ssh, komputer Anda mengambil id_rsa secara default dan menggunakannya sebagai identitas ssh-nya.
  3. github tidak dapat (tidak mengherankan) mendekonflik akun mana yang Anda maksud, karena ini mendasarkan akun dari kunci yang disajikan, yang jika dikaitkan dengan lebih dari satu akun, menyebabkan rasa sakit seperti ini. Pembunuhnya adalah, untuk waktu yang lama, saya lolos dari ini dan semuanya berjalan lancar.

Entri yang saya tambahkan adalah:

Host github.com
    Hostname github.com
    Port 22
    User waterproofpatch
    IdentityFile ~/.ssh/id_rsa_waterproofpatch

Saya telah membuat kunci baru , unik untuk akun saya, sebagai id_rsa_waterproofpatch. Entri di konfigurasi ssh saya ini menetapkan bahwa untuk koneksi ke github.com, saya ingin menampilkan kunci ini.

Solusi lain mungkin bagi saya untuk masuk ke akun lain, hapus kunci ssh duplikat.


2

Saya mengalami masalah serupa dan ternyata masalahnya adalah fakta bahwa file kunci publik berisi alamat email saya di baris terakhir. Itu sepertinya mengesampingkan pengaturan Pengguna di konfigurasi saya. Segera setelah saya menghapus email saya dari file .pub (dan mengunggah ulang ke repo saya) Git terhubung menggunakan pengguna yang benar.


Ini berhasil untuk saya. Tidak yakin mengapa pengenal pada file kunci publik awalnya dalam format 'nama @ domain' tapi sebenarnya.
Brian Wagner

1

Yang berhasil bagi saya adalah menggunakan URL https repo Github alih-alih URL ssh . Saya pergi ke halaman proyek Github dan menyalin URL https ke clipboard saya, dan kemudian menempelkannya ke perintah kedua di bawah ini:

git remote rm origin
git remote add origin https://[...]

1

Betapa sakit di pantat!

masalah:

  1. buat repo di git hub
  2. mengkloning ke mesin lokal
  3. tidak bisa mendorong 403.

berubah karena alasan yang tidak diketahui git push menggunakan pengguna yang salah. Saya memiliki beberapa id pengguna git hub yang berbeda. Saya bekerja untuk 2 perusahaan yang berbeda dan juga memiliki nomor pelajar

Saya sedang mengerjakan mac. inilah yang akhirnya saya lakukan

1) hapus credential.helper

  • beberapa cara pembantu kredensial disetel ke osxkeychain
  • ketika saya memulai rantai kunci, klik login, kata sandi dan mencari github saya menemukan 3 entri. Saya tidak tahu bagaimana gantungan kunci bisa tahu mana yang akan digunakan

Sebuah. Anda perlu mencari tahu di mana credential.helper dikonfigurasi

git config --local credential.helper
git config --global credential.helper
git config --system credential.helper

b. setelah menemukan file ara yang benar hapus sebagai berikut

git config --global --unset credential.helper

Sekarang di repo lokal saya, saya meretas file .git / config

aku berubah

    url = https://github.com/aedavids/lab3RotationProject.git

untuk

    url = https://myGitHubUserId@github.com/aedavids/lab3RotationProject.git

1

Dalam kasus khusus saya, masalahnya adalah saya menggunakan .netrcuntuk mengakses github.comdan dikonfigurasi dengan token dari pengguna lain:

machine github.com login <another-user-token>

0

membersihkan gantungan kunci tidak membantu ... Saya harus ssh-add -Ddan menambahkan kembali kunci denganssh-add <keyfile>


0

Saya memecahkan masalah ini dengan menghapus (atau mengganti nama menjadi * .bak) file id_rsa dan id_rsa.pub di MacOS High Sierra. Ide dari sini .

Saya memiliki pengalihan host khusus di ~ / .ssh / config yang harus diterapkan tetapi menggunakan pengguna yang salah sebelum saya mengganti nama kedua file ...


0

Itulah yang berhasil bagi saya:

  1. Mengubah kredensial di dalam .git-credentials
  2. Mengubah global user.name dan user.email di dalam .gitconfig

0

Apa yang berhasil untuk saya menghapus repo dan menambahkannya lagi:

git remote rm origin
git remote add origin git@github.com:fguillen/MyApp.git

0

Saya memiliki masalah yang sama di windows10 bahkan setelah menghapus git saya, seperti @ user542833 mengatakan itu karena cache windows dan Anda harus menghapus kredensial Github di windows Anda Credential Managerdan ketika Anda mencoba lagi untuk mendorong, windows meminta kredensial Anda dan mengaturnya lagi


ini kadang berhasil bagi saya, tetapi kadang juga tidak.
bvdb

0

Baru saja menghabiskan 6 jam untuk memikirkan hal ini ketika mencoba mendorong ke repo halaman GitHub baru di akun baru.

Bahkan setelah mengatur config user.name dan user.email itu akan menjadi default ke akun utama saya.

Ini karena kunci ssh akan default ke id_rsa (akun utama saya).

Untuk menggunakan akun baru saya harus menjalankan:

ssh-add ~/.ssh/my_new_key

yang kemudian akan membuat git menggunakan kunci baru saat menekan.

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.