git, terminalden yanlış kullanıcıyla itiyor


112

Git ve terminalimle ilgili bir sorunum var.

Size sorunumu gösterecek bir galeri: http://imgur.com/a/6RrEY

İşlemleri terminalimden ittiğimde, git onları başka bir kullanıcı adıyla ittiğimi söylüyor, bu benim kuruluşumdan (şirketim) hiçbir taahhüt içermeyen bir kullanıcı ve hiç kimseye ait gibi görünmüyor: (galeri ilk resmini kontrol et)

Ancak mac için Github kullandığımda bu olmuyor, beslemede kendim tarafından bastırılan taahhütleri görüyorum.

Sorun aynı zamanda kişisel depolarımı da etkiliyor, terminalim, bu kullanıcıyla onu itmeye çalıştığı için bu depolara işlem yapma iznine sahip olmadığımı söylüyor (bu açıkça yanlıştır): (galeri ikinci resmini kontrol edin)

Bil bakalım ne oldu ? Bu, Mac için Github'da da olmaz.

Birkaç gün önce bilgisayarımı yepyeni bir bilgisayarla değiştirdim, bu yüzden tüm github ssh anahtarımı sıfırladım ve yalnızca Mac için Github tarafından oluşturulan yeni bir tane bıraktım, bu yüzden gizli bir hayalet kullanıcı / ssh anahtarı olduğunu düşünmüyorum bir yerlerde, bu hdd yepyeni: (galerideki üçüncü resme bakın)

.Gitconfig dosyam temiz, sadece kimlik bilgilerim var: (galeri dördüncü resmine bakın )

Gerçekten anlamıyorum, StackOverflow, benim tek umudum sensin.

(Zayıf Gimp becerilerim ve Star Wars referansı için özür dilerim)

DÜZENLEME: ssh-add -l yalnızca mac için github tarafından oluşturulan iyi ssh anahtarını gösterir ve yalnızca bir github hesabım var

EDIT2: ssh -T git@github.com beni iyi bir kullanıcı olarak tanı .

DÜZENLEME3: Birkaç testten sonra, terminalim kullanıcı adımla taahhütleri yapıyor gibi görünüyor, ancak onları diğeriyle itiyor, Mac için Github iyi kullanıcı adıyla taahhüt ediyor ve itiyor.Bu durum, sahip olduğum / yaptığım her depoda (hatta yeni olanlar).

DÜZENLEME4: Kişisel bir depoda git log --pretty="%h %an %ae"iyi kullanıcı adımı gösterir

DÜZENLEME5: benim kimlik bilgilerimi geçersiz kılacak ortam değişkenleri belirtisi yok env. Bu değişkenleri iyi kimlik bilgileriyle ayarlamaya çalışsam bile sorun devam ediyor.

DÜZENLEME6: Kullanıcıyı /.git/configbir depo yolunda zorlarsam işler normal şekilde çalışır, ancak bunun iyi bir seçenek olduğunu düşünmüyorum:http://USER@github.com/USER/REPO.git

DÜZENLEME7: İşlemleri benim için iten git kullanıcısını sildik ve bu başka bir hata getiriyor:remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

SON DÜZENLEME: git'i homebrew ile yükledim git config --global push.default simple , yazdım ve şimdi kullanıcıyı zorlamadan bile kimlik bilgilerimi alıyor. Bu garip. Yardımlarınız için herkese teşekkürler, harikasınız!


2
çek ~/.gitconfigve $project_root/.git/configdosyalar. Bu ikisinden biri kesinlikle kullanıcı adı için yanlış yapılandırılmıştır.
mu 無

1
Cevabınız için teşekkürler ansh0l. ~/.gitconfigaçık ve öyle $project_root/.git/config. Aslında her kişisel projemde bu sorunu yaşıyorum, diğer kullanıcı bu depoların sahibi olan kuruluşuma ait olduğu için iş projeleri zorlanabilir.
Yinfei

Birden fazla github hesabınız var mı? Biri şirket için, diğeri kişisel kullanım için mi?
mu 無

Hayır, her şey için sadece bir tane.
Yinfei

1
Can sıkıcı bir çözüm, başka bir SSH anahtarını yeniden oluşturmak olabilir. Mevcut SSH anahtarınızı başka bir hizmetle kullanıyorsanız anlamsız olacaktır.
Eduardo Bautista

Yanıtlar:


168

Bu problemi işte daha yeni yaşadım. Mac ile birlikte gelen veya xcode yüklediğinizde gelen yerleşik git, anahtarlıkta git kimlik bilgilerini önbelleğe alır. Benim için düzeltme şuydu:

anahtarlık erişimini başlatın (cmd + boşluk ile spot ışığı başlatın, anahtarlık yazın, enter tuşuna basın)

Sol üstteki anahtar zincirlerinin altında "giriş" i seçin Soldaki kategori altında "şifreler" i seçin

"github" adını bulun ve silin.


2
Buradaki tüm github girişini sildiğinizden ve oturum açma yapılandırmasını ayarladığınızdan emin olun * git config --global user.name <name> * git config --global user.email <email>
Shank_Transformer

Benim durumumda, SourceTree bu sorunu yaşıyordu. Anahtar zincirindeki öğeyi silmek sorunu çözdü!
Shoerob

1
@Shank_Transformer çözümünüz benim için çalıştı! Teşekkür ederim!
Nazariy

Aramanız (veya doğrudan başlatmanız) gerekebilir seahorseUbuntu'da .
gak

3
Size borçluyum efendim
Baconbeastnz

47

github sizi git'in herhangi bir ayarıyla değil, gördüğü ssh anahtarıyla tanımlar.

Bu nedenle, kişisel hesabınızdan aktarmaya çalıştığınızda iş hesabınızın ssh anahtarının anahtarlığınızda olmadığından emin olmanız gerekir ve bunun tersi de geçerlidir.

Kullanım ssh-add -lanahtarlığınıza içinde hangi tuşları belirlemek ve ssh-add -d <keyfile>bu işi gelen 'istenmeyen' ssh anahtarını kaldırın dosent eğer Anahtarlıktan bir anahtar kaldırmak için ~/.ssh/config.

kaynak

Not: Github, taahhüdünüzü yalnızca e-postaya göre belirlemeye devam edecektir.


5
user.emailDoğru ayarlanmış olmama rağmen neden sürekli olarak yanlış github hesabını kullandığını açıklayan tek cevap budur . Keşke beş kez ek oy verebilseydim.
Chris

1
benim durumumda ssh anahtarını kaldırmak bir cazibe gibi çalıştıssh-add -D
rPawel

Benim için işe yarayan tek cevap buydu. Teşekkürler!!
Edward Hartnett

İşe yarayan tek seçenek. Git'in neden doğru anahtarı seçmediği anlamsız. Ssh dosyasından bahsettiğimiz için config'de kullanmak zorunda.
Revanth Kumar

Bunu yaptığımda ssh-add -lyardımcı olmayan bir yanıt alıyorum. It türleri dışarı 4096 SHA256:lotsOfGibberish,about40chars (RSA)nasıl bize bu bilgileri bilmiyorum.
MiguelMunoz

20

Diğer kullanıcılar tarafından verilen tüm harika seçeneklere rağmen, bunu düzeltmenin tek yolu git'i tamamen yeniden yüklemek ve git config --global push.default simpleiyi kimlik bilgilerini yeniden yazmaktı.


@VonC, cevabın harikaydı ama işe yaramadı. Benim için işe yarayan tek çözüm bu. Acaba git sorunu mu yoksa OSX mi ...
swilgosz

40
git config --system --unset credential.helperbenim için çalıştı, şimdi tekrar push'ta GitHub kimlik bilgilerim isteniyor ve doğru kullanıcı kimliğini ve parolayı sağlayabilir.
CodeManX

@CoDEmanX benim için çalışan tek cevap seninki idi. Bununla karşılaşan diğer herkes için, github ile işte 2FA kullanmamız ve önce github gui'den bir token oluşturmam ve yerel kimlik bilgilerimi sıfırladıktan sonra bunu komut satırından şifrem olarak kullanmam gerektiğiydi! kontrol https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/ detaylar için
vancouverwill

Yalnızca .gitconfig dosyası. Ya onu kaldırın ya da sıfırlayın ... Bir röportaj için bir deneme projesi sunduğumda bu sorunla karşılaştım. Lanet olsun, acıtıyor. Yapılandırma dosyası ile birlikte
Girish

git config --system --unset credential.helperWindows 10'da çalışmıyor git bash:error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denied
alex

17

Windows 10 kullanıyorum ve bugün aynı sorunla karşılaştım. Benim durumumda, farklı kullanıcı için kimlik bilgilerim Windows Kimlik Bilgisi yöneticisi tarafından kaydedildi. Bu nedenle, aşağıdaki komutla git kimlik bilgilerini silmek / kaldırmak, git config --global --unset credential.helper

yardımcı olmadı. Aşağıdaki yolu izleyerek Windows'taki girişi manuel olarak silmem gerekiyordu,

Başlat -> Denetim Masası ---> Kullanıcı Hesapları ---> Kimlik bilgilerinizi yönetin ---> Windows Kimlik Bilgileri

Ardından git: https://github.com gibi bir girişi arayın ve kaldırın. Bundan sonra iyi çalışıyor.


Thank you Gowtham
Balint

Teşekkürler, Windows'ta daha önce bu sorunu hiç yaşamadım ama bugün bu sorunu yaşadım ve yorumunuzu burada görmekten mutluyum.
RaKoDev

"Yardımcı olmadı" diyorsunuz, ancak size yapılandırma dosyasını kilitleyemeyeceği mesajını verdiyse, sorun basitçe, yukarıdaki bir yorumda belirtildiği gibi, onu yükseltilmiş bir Komut İstemi'nden çalıştırmanız gerektiğidir. .
Stefan

15

Görünüşe göre terminalim benim kullanıcı adımla taahhütleri yapıyor, ancak diğeriyle itiyor

Yazar ve uygulayan adı ve e-posta (GitHub için önemlidir) şunlardan elde edilir:

git config user.name
git config user.email

Ancak, belirtildiği gibi git configve git commit-tree, bu değerler ortam değişkenleri tarafından geçersiz kılınabilir:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL

Bu yüzden bu değişkenleri iki kez kontrol edin.

Kullanıcıyı .git/configbir depoya zorlarsam işler normal şekilde geri döner, ancak bunun iyi bir seçenek olduğunu düşünmüyorum.

Ama iyi bir çözüm olmalı.
Bir https url kullanırken, kimlik doğrulamasının doğru kullanıcıyla yapıldığından emin olmak için her zaman içinde kullanıcıyı belirtirim.

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

Cevabınız için teşekkürler VonC! Maalesef, git configkimlik bilgilerim doğru ve /username/.bashrc
dosyamda

@ Yinfei84 yine de, ' env' çıktınızı kontrol edin .
VonC

@ Yinfei84 (test etmek için) bu değişkenleri açıkça belirlerseniz ve bir commit ve bir push yapmayı denerseniz ne olurdu. Bu daha iyi olur mu?
VonC

Az önce yaptım ve sorun devam ediyor.
Yinfei

2
Kusura bakmayın, eğer kullanıcıyı aşağıdaki gibi bir yola http://USER@github.com/USER/REPO.git
zorlarsam işe yarayacağını kastetmiştim

9

Önce geçici bir çözüm çalıştırılır, killall ssh-agentardından kullanmanız gereken hesap için oluşturulan ssh anahtarlarını ekleyin.ssh-add ~/.ssh/id_4shameer

Yazı hatası aldığımızda birden fazla github hesabı üzerinde çalışmamıza yardımcı olacaktır. ERROR: Permission to user/repo-git.git denied to username.


1
Bunu MacOS anahtarlığından herhangi bir Github girişini kaldırdıktan sonra yaptım ve mükemmel bir şekilde çalıştı. İki puan, sonra , SSH-madde ile yeniden başlatılması gerekir , ve komut ile yürütülecek olan . killalleval "$(ssh-agent -s)"ssh-addsudo
arvymetal

7

MAC kullanıyorsanız, Anahtar Zinciri Erişimi'ne gidin ve git erişimi istemediğiniz kullanıcının girişini kaldırın.


4

Benim için çözüm, github için ~ / .ssh / config dosyama bir girdi eklemekti. Bunu yapmak zorundaydım çünkü:

  1. Aynı anahtara sahip birden fazla github hesabım vardı (bunu yapmayın!)
  2. ssh kullanarak 'git push' yaptığınızda, bilgisayarınız varsayılan olarak id_rsa'yı alır ve bunu ssh kimliği olarak kullanır.
  3. github (şaşırtıcı olmayan bir şekilde) kastettiğin hesabın çatışmasını çözemez, çünkü hesabı sunulan anahtara dayandırıyor, ki bu birden fazla hesaba bağlanırsa böyle bir acıya neden oluyor. Katil, uzun zamandır bundan sıyrılıyordum ve işler yolunda gitti.

Eklediğim giriş:

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

Ben yaratmıştı yeni id_rsa_waterproofpatch olarak hesabıma eşsiz anahtar,. Ssh yapılandırmamdaki bu giriş, github.com'a bağlantılar için bu anahtarı sunmak istediğimi belirtir.

Muhtemelen başka bir çözüm, diğer hesaba giriş yapmam, yinelenen ssh anahtarını silmem olurdu.


2

Benzer bir sorunla karşılaştım ve sorunun, son satırda e-posta adresimin genel anahtar dosyası içermesi olduğu ortaya çıktı. Bu, yapılandırmamdaki Kullanıcı ayarını geçersiz kılıyor gibiydi. .Pub dosyasından e-postamı kaldırır kaldırmaz (ve depoma yeniden yükler) Git doğru kullanıcıyı kullanarak bağlandı.


Bu benim için çalıştı. Genel anahtar dosyasındaki tanımlayıcının neden orijinal olarak 'alan adı' biçiminde olduğundan emin değilim ama öyleydi.
Brian Wagner

1

Benim için işe yarayan şey , ssh URL'si yerine Github deposunun https URL'sini kullanmaktı . Github proje sayfasına gittim ve https URL'sini panomun içine kopyaladım ve ardından aşağıdaki ikinci komuta yapıştırdım:

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

1

Ne büyük dert!

sorun:

  1. git hub'da bir depo oluştur
  2. yerel makineye klonla
  3. 403'ü itemiyorum.

git push'un yanlış kullanıcıyı kullandığı bilinmeyen bir nedenle döner. Birkaç farklı git hub kullanıcı kimliğim var. 2 farklı şirkette çalışıyorum ve ayrıca öğrenci kimliğim var

Mac üzerinde çalışıyorum. işte sonunda yaptığım şey

1) kimlik bilgilerini kaldırın.helper

  • kimlik bilgisi yardımcısının osxkeychain'e nasıl ayarlandığını
  • keychain'i başlattığımda, giriş, şifreleri tıklayın ve github'u aradığımda 3 giriş buldum. Anahtar zincirinin hangisini kullanacağını nasıl bildiği hakkında hiçbir fikrim yok

a. credential.helper öğesinin nerede yapılandırıldığını bulmanız gerekir

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

b. doğru incir dosyasını bulduktan sonra aşağıdaki gibi çıkarın

git config --global --unset credential.helper

Şimdi yerel depomda .git / config dosyasını hackledim

Ben değiştim

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

için

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

1

Benim özel durumumda, sorun, .netrcerişim için bir kullanmam github.comve farklı bir kullanıcıdan bir jetonla yapılandırılmış olmasıydı:

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

0

ssh-add -DAnahtar zincirini temizlemek işe yaramadı ... anahtarı şununla yeniden eklemek zorunda kaldım:ssh-add <keyfile>


0

MacOS High Sierra'da id_rsa ve id_rsa.pub dosyasını kaldırarak (veya * .bak olarak yeniden adlandırarak) bu sorunu çözdüm. Buradan bir fikir .

~ / .Ssh / config'de uygulanması gereken ancak iki dosyayı yeniden adlandırmadan önce yanlış kullanıcı kullanılan özel ana bilgisayar yönlendirmelerim var ...


0

Benim için çalışan buydu:

  1. .Git-credentials içindeki kimlik bilgilerini değiştirme
  2. .Gitconfig içindeki genel user.name ve user.email'i değiştirme

0

Depoyu kaldırıp tekrar ekleyerek benim için ne işe yaradı:

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

0

Gitimi kaldırdıktan sonra bile windows10'da aynı sorunu yaşıyorum , çünkü @ user542833 , Windows önbelleği ve pencerelerinizdeki Github kimlik bilgilerini kaldırmanız gerektiğini Credential Managerve tekrar basmaya çalıştığınızda, pencereler kimlik bilgilerinizi soruyor ve tekrar ayarlıyor.


bu bazen benim için çalıştı ama bazen işe yaramadı.
bvdb

0

Yeni bir hesapta yeni bir GitHub sayfalarının deposuna göndermeye çalışırken bunu anlamak için 6 saat harcadım.

Config user.name ve user.email'i ayarladıktan sonra bile varsayılan olarak ana hesabım olacaktı.

Bunun nedeni ssh anahtarının varsayılan olarak id_rsa (ana hesabım) olarak ayarlanmasıdır.

Çalıştırmam gereken yeni hesabı kullanmak için:

ssh-add ~/.ssh/my_new_key

bu da git'in iterken yeni anahtarı kullanmasını sağlayacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.