git штовхає з неправильним користувачем з терміналу


112

У мене проблема з git та моїм терміналом.

Ось галерея, щоб показати вам мою проблему: http://imgur.com/a/6RrEY

Коли я натискаю коміти з мого терміналу, git каже, що я натискаю на них з іншим ім'ям користувача, це користувач з моєї організації (моєї компанії), не маючи жодних зобов'язань, і, здається, це нікому не належить: (перевірте галерею перший малюнок)

Але цього не трапляється, коли я використовую Github для mac, у стрічці я бачу комітети, які висунув сам.

Проблема також стосується моїх особистих сховищ, мій термінал каже, що я не маю дозволу наштовхувати коміти на ці сховища (що, очевидно, неправильно), оскільки він намагається передати це користувачеві: (перевірте другу галерею картинки)

Вгадай що ? Це не трапляється і з Github для mac.

Кілька днів тому я змінив комп’ютер на абсолютно новий, тому перезавантажив увесь свій ssh ​​ключ github і залишив лише новий, створений Github для Mac, тому я не думаю, що прихований користувач / ssh ключ десь цей hdd є абсолютно новим: (перевірте галерею, третя картинка)

У моєму файлі .gitconfig все зрозуміло, є лише мої облікові дані: (перевірити галерею четвертий малюнок)

Я насправді цього не розумію, допоможіть, StackOverflow, ти єдина моя надія.

(Мої вибачення за мої погані навички Gimp та посилання на Зоряні війни)

EDIT: ssh-add -l показує лише гарний ключ ssh, створений github для mac, і у мене є лише один обліковий запис github

EDIT2: визнайте ssh -T git@github.com мене хорошим користувачем.

EDIT3: Після декількох тестів виглядає так, що мій термінал виконує посилання на моє ім'я користувача, але натискає на них з іншим, Github for mac здійснює та наштовхується з хорошим ім'ям користувача. Ця ситуація трапляється з кожним репо, що в мене є / робить (навіть новий ті).

EDIT4: В особистому сховищі git log --pretty="%h %an %ae"відображається моє хороше ім’я користувача

EDIT5: Жодних ознак змінних оточення, які б перекривали мої облікові дані в моїй env. Навіть якщо я спробую встановити ці змінні, якщо проблема з хорошими обліковими записами зберігається.

EDIT6: Речі працюють нормально, якщо я примушую користувача до шляху /.git/configсховища, але я не думаю, що це найкращий варіант:http://USER@github.com/USER/REPO.git

EDIT7: Ми видалили користувача git, який підштовхнув коміти для мене, і це спричинило ще одну помилку:remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

ОКОНЧАЛЬНА РЕДАКТА : я встановив git з домашньою мовою, набрав git config --global push.default simple і тепер він займає мої облікові дані, навіть не змушуючи користувачів. Це дивно. Дякую всім за допомогу, ви чудові хлопці!


2
перевірка ~/.gitconfigта $project_root/.git/configфайли. Один із цих двох, безумовно, неправильно налаштований на ім’я користувача.
му 無

1
Дякую за вашу відповідь ansh0l. ~/.gitconfigзрозуміло і так $project_root/.git/config. Насправді у мене є проблема з кожним особистим проектом, робочі проекти можна підштовхнути, оскільки цей інший користувач належить до моєї організації, яка володіє цими сховищами.
Yinfei

У вас тоді кілька облікових записів github? Один для компанії, інший для особистого користування?
му 無

Ні, лише один на все.
Yinfei

1
Прикрим рішенням буде просто відновити ще один ключ SSH. Якщо ви використовуєте свій поточний ключ SSH з іншою службою, це буде безглуздо.
Едуардо Баутіста

Відповіді:


168

У мене просто була ця проблема на роботі. Вбудований git, який постачається з mac або поставляється під час встановлення кешових файлів xcode, git-облікових даних у keychain. Виправленням для мене було:

запуск доступу до брелоків (запустіть прожектор через cmd + пробіл, введіть брелок, натисніть клавішу Enter)

Під брелками ліворуч виберіть "Логін" Під категорією зліва виберіть "паролі"

знайдіть назву "github" та видаліть її.


2
Переконайтесь, що ви видалили тут усі записи github і встановили конфігурацію входу * git config --global user.name <ім'я> * git config --global user.email <email>
Shank_Transformer

У моєму випадку у SourceTree виникла ця проблема. Видалення елемента в брелок виправлено!
Взуттєвий

1
@Shank_Transformer ваше рішення працювало на мене! Дякую!
Назарій

Можливо, вам доведеться шукати (або запускати безпосередньо) seahorseна Ubuntu.
каре

3
Я в боргу перед вами, сер
Baconbeastnz

46

github ідентифікує вас за допомогою ssh-ключа, який він бачить, а не за будь-якими налаштуваннями від git.

Тому вам потрібно переконатися, що ключ ssh вашого робочого рахунку не знаходиться у вашому брелоку, коли ви намагаєтесь відштовхуватися від свого особистого облікового запису та навпаки.

Використовуйте, ssh-add -lщоб визначити, які ключі є у вашому брелоку, і ssh-add -d <keyfile>вилучіть ключ із брелока, якщо він не працює, видаліть із нього "небажаний" ключ ssh ~/.ssh/config.

джерело

Примітка: Github все одно визначить вашу комісію на основі лише електронної пошти.


5
Це єдина відповідь, яка пояснює, чому він наполегливо використовував неправильний обліковий запис github, незважаючи на те, що я user.emailвстановлений правильно. Побажання я міг би підняти п'ять разів.
Кріс

1
у моєму випадку видалення ключа ssh спрацювало як принадністьssh-add -D
rPawel

Це була єдина відповідь, яка працювала на мене. Дякую!!
Едвард Хартнетт

Єдиний варіант, який спрацював. Немає сенсу, чому git не вибрав потрібний ключ. Оскільки ми згадуємо файл ssh, який він повинен використовувати у config.
Реванш Кумар

Коли я це роблю, ssh-add -lя отримую відповідь, яка не допомагає. Він видає, 4096 SHA256:lotsOfGibberish,about40chars (RSA)я не знаю, як нам цю інформацію.
МігельМуноз

20

Незважаючи на всі чудові варіанти, що надаються іншими користувачами, єдиний спосіб виправити це - перевстановити git повністю і ввести git config --global push.default simpleдля перезапису хороших облікових даних.


@VonC, незважаючи на те, що ваша відповідь була чудовою, вона взагалі не працювала. Це єдине рішення, яке працювало на мене. Цікаво, чи це проблема git чи OSX ...
swilgosz

40
git config --system --unset credential.helperпрацював для мене, тепер я знову просив свої дані GitHub при натисканні і можу надати правильний ідентифікатор користувача та пароль.
CodeManX

@CoDEmanX ваші відповіді були єдиною відповіддю, яка працювала на мене. Для всіх, хто стикається з цим, це було тому, що ми використовуємо 2FA в роботі з github, і мені потрібно було спершу генерувати маркер з github gui і використовувати це як мій пароль з командного рядка після того, як я скинув свої локальні дані! ознайомтеся https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/ для деталей
vancouverwill

Це просто файл .gitconfig. Або видаліть це, або скиньте його ... Я зіткнувся з цією проблемою, коли подав пробний проект на інтерв'ю. Чорт боляче хоч. Його з конфігураційним файлом
Girish

git config --system --unset credential.helperне працює на Windows 10 git bash:error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denied
alex

17

Я використовую Windows 10, і сьогодні я зіткнувся з тією ж проблемою. У моєму випадку мої облікові дані для іншого користувача були збережені менеджером Windows Credential. Таким чином, видаляючи / вимикаючи облікові дані git із командою нижче, git config --global --unset credential.helper

не допомогло. Мені довелося вручну видалити запис у Windows, дотримуючись наведеного нижче способу,

Пуск -> Панель управління ---> Облікові записи користувачів>> Керуйте своїми обліковими даними ---> Актенти Windows

Потім шукайте запис типу, git: https://github.com та видаліть його. Це добре працює після цього.


Дякую Гоутем
Балінт

Дякую, у мене раніше цього не було в Windows, але сьогодні я мав цю проблему, і я радий побачити ваш коментар тут.
RaKoDev

Ви говорите, що це "не допомогло", але якщо воно дало вам повідомлення про те, що він не може заблокувати конфігураційний файл, проблема полягає лише в тому, що вам потрібно запустити його з підвищеного командного рядка, як було зазначено в коментарі вище .
Стефан

15

схоже, мій термінал виконує посилання на моє ім’я користувача, але підштовхує їх до іншого

Ім’я автора та виконавця та електронна адреса (важливі для GitHub) походять від:

git config user.name
git config user.email

Однак, як зазначено в git configі git commit-tree, ці значення можуть бути замінені змінними середовища:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL

Тож двічі перевірте ці змінні.

Речі працюють нормально, якщо я змушую користувача в .git/configсховищі, але я не думаю, що це хороший варіант.

Але це має бути хорошим рішенням.
Використовуючи URL-адресу https, я завжди вказую користувача в ньому, щоб переконатися, що аутентифікація виконана з потрібним користувачем.

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

Дякуємо за Вашу відповідь VonC! На жаль, мої git configоблікові дані правильні, і в моєму /username/.bashrcфайлі немає змінних
оточуючих

@ Yinfei84, тим не менш, перевірте свій ' env' вихід.
VonC

@ Yinfei84, що станеться, якщо (щоб перевірити це) ви встановите ці змінні явно, і спробуйте скористатися і натиснути. Чи б це працювало тоді краще?
VonC

Я просто це зробив і проблема зберігається.
Yinfei

2
Вибачте, якщо я прояснив, я мав на увазі, що це http://USER@github.com/USER/REPO.git
спрацює,

9

Спочатку запустіть тимчасове рішення, після killall ssh-agentчого додайте ключі ssh, створені для облікового запису, який потрібно використовуватиssh-add ~/.ssh/id_4shameer

Це допоможе нам працювати над декількома обліковими записами github, коли ми отримаємо помилку типу ERROR: Permission to user/repo-git.git denied to username.


1
Я зробив це після видалення будь-якого запису Github з брелока MacOS , і він працював чудово. Дві точки, після того , як killall, то SSH-агент повинен бути перезапущений з eval "$(ssh-agent -s)", і ssh-addкоманда повинна бути виконана з sudo.
арвіметал

7

Якщо ви використовуєте MAC, перейдіть до Keychain Access і видаліть запис користувача, для якого ви не хочете отримати доступ до git.


4

Для мене рішення було додати запис до мого файлу ~ / .ssh / config для github. Мені довелося це зробити тому, що:

  1. У мене було кілька облікових записів github з одним ключем (не робіть цього!)
  2. коли ви "git push" за допомогою ssh, ваш комп'ютер за замовчуванням захоплює id_rsa і використовує це як свою ssh ідентичність.
  3. github не може (не дивно) деконфліктувати, який обліковий запис ви маєте на увазі, оскільки він засновує обліковий запис на ключі, який він представляє, що, якщо він прив’язаний до декількох облікових записів, призводить до такого болю. Вбивця - давно, я від цього відходив, і речі просто склалися.

Я додав запис:

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

Я створив новий ключ, унікальний для мого облікового запису, як id_rsa_waterproofpatch. Цей запис у моєму конфігурації ssh визначає, що для підключення до github.com я хочу представити цей ключ.

Можливо, іншим рішенням було б увійти в інший обліковий запис, видалити повторюваний ключ ssh.


2

У мене була подібна проблема, і виявилося, що проблема полягала в тому, що файл відкритого ключа містив мою електронну адресу в останньому рядку. Це, здавалося, перевершує налаштування користувача в моєму конфігурації. Як тільки я видалив електронний лист із .pub-файлу (і повторно завантажився на репо), Git підключився за допомогою правильного користувача.


Це працювало для мене. Не впевнений, чому ідентифікатор у файлі відкритого ключа спочатку був у форматі "name @ domain", але це був.
Брайан Вагнер

1

Для мене працювало те, щоб використовувати https URL Github repo замість ssh URL. Я перейшов на сторінку проекту Github і скопіював https URL у мій буфер обміну, а потім вставив її у другу команду нижче:

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

1

Який біль у задці!

проблема:

  1. створити репо на git hub
  2. клон до місцевої машини
  3. не може натиснути 403.

Повороти з незрозумілої причини git push користувався невірним користувачем. У мене є кілька різних ідентифікаторів користувачів git hub. Я працюю в двох різних компаніях, а також маю ідентифікатор студента

Я працюю над mac. ось що я нарешті зробив

1) видаліть довідник.хельпер

  • Деякі, як помічник довіри встановив osxkeychain
  • коли я запустив брелок, натисніть на логін, паролі та шукав github, я знайшов 3 записи. Я поняття не маю, як брелок може знати, який з них використовувати

а. вам потрібно розібратися, де налаштований файл povericial.helper

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

б. як тільки знайдете правильний файл-фіг, видаліть його наступним чином

git config --global --unset credential.helper

Зараз у своєму місцевому репо я зламав .git / config файл

я змінив

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

до

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

1

У моєму конкретному випадку проблема полягала в тому, що я використовував a .netrcдля доступу, github.comі він був налаштований з маркером від іншого користувача:

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


0

Я вирішив цю проблему, видаливши (або перейменувавши на * .bak) файл id_rsa та id_rsa.pub на MacOS High Sierra. Ідея звідси .

У мене є власні переадресації хостів у ~ / .ssh / config, які слід застосувати, але використовував неправильний користувач, перш ніж я перейменував два файли ...


0

Ось що для мене спрацювало:

  1. Зміна облікових даних всередині .git-облікових даних
  2. Зміна глобального імені користувача та user.email всередині .gitconfig

0

Що для мене спрацювало, видаливши репо і додавши його знову:

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

0

У мене така ж проблема в Windows10 навіть після видалення моєї git, як @ user542833 каже, що це так, тому що кеш Windows, і ви повинні видалити облікові дані Github у ваших Windows, Credential Managerі коли ви знову намагаєтеся натиснути, Windows запитає ваш обліковий запис і встановити його знову


це інколи спрацьовувало для мене, але також іноді не бувало.
bvdb

0

Щойно витратили 6 годин на це, розбираючись, намагаючись перейти на нову репо-сторінку GitHub на новий акаунт.

Навіть після встановлення config user.name та user.email це буде за замовчуванням для мого основного облікового запису.

Це тому, що ключ ssh за замовчуванням буде id_rsa (мій основний рахунок).

Для використання нового облікового запису мені довелося запустити:

ssh-add ~/.ssh/my_new_key

яка потім змусить git використовувати нову клавішу під час натискання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.