Если вы получаете это сообщение во время сохранения или компиляции сборки, просто закройте все файлы, а затем откройте любой файл для компиляции и сохранения.
Для меня причина в том, что я переименовал файл, и старый файл все еще был открыт.
Все, что вам нужно сделать, это настроить свою настройку SSH с помощью нескольких ключей SSH.
Кроме того, если вы работаете с несколькими репозиториями с использованием разных персонажей, вы необходимо убедиться, что ваши индивидуальные репозитории имеют соответствующие настройки пользователя:
Настройка имени пользователя, электронной почты и токена GitHub - переопределение настроек для отдельных репозиториев https://help.github.com/articles
EDIT: Обновленные ссылки
Я нашел этот камень очень полезным: sshwitch
https://github.com/agush22/sshwitch http://rubygems.org/gems / sshwitch
Он помогает переключать ключи ssh. Не забудьте сделать все сначала!
Также, чтобы убедиться, что у коммит есть правильный адрес электронной почты, связанный с ними, я убедился, что файл ~ / .gitconfig имеет правильный адрес электронной почты.
Спасибо user1107028:
Использовать HTTPS:
blockquote>изменить удаленный url на https:
git remote set- url origin https: //USERNAME@github.com/USERNAME/PROJECTNAME.git , и вам хорошо идти:
git push
blockquote>] Я нашел это лучшим способом при использовании нескольких учетных записей github. Я не могу использовать только одну учетную запись, ее просто невозможно, и я не мог заставить SSH вести себя независимо от того, что я сделал. Id проголосовали за ответ, но у меня нет достаточного количества баллов - я хотел признать это простое решение для таких, как я, нуждающихся в чистом простом решении. Он работал в первый раз и сэкономил мне больше времени.
Помимо создания нескольких SSH-ключей для нескольких учетных записей, вы можете также рассмотреть возможность добавления коллабораторов для каждого проекта с использованием тех же учетных записей электронной почты и постоянным сохранением пароля.
#this store the password permanently
$ git config --global credential.helper wincred
Я установил несколько учетных записей с разными электронными письмами, а затем поставил один и тот же пользователь и адрес электронной почты на каждую учетную запись в качестве одного из сотрудников. Таким образом, я могу получить доступ ко всей учетной записи без добавления SSH-ключа или переключения на другое имя пользователя и по электронной почте для аутентификации.
Я использую сценарии оболочки, чтобы переключить меня на любую учетную запись, которую я хочу быть «активным». По сути, вы начинаете с нового старта, настраиваете и настраиваете одну учетную запись, а затем переместите эти файлы на имя с соответствующим префиксом. С этого момента вы можете использовать команду «github» или «gitxyz» для переключения:
# my github script
cd ~/.ssh
if [ -f git_dhoerl -a -f git_dhoerl.pub -a -f config_dhoerl ]
then
;
else
echo "Error: missing new files"
exit 1
fi
# Save a copy in /tmp, just in case
cp id_rsa /tmp
cp id_rsa.pub /tmp
cp config /tmp
echo "Saved old files in /tmp, just in case"
rm id_rsa
rm id_rsa.pub
rm config
echo "Removed current links/files"
ln git_dhoerl id_rsa
ln git_dhoerl.pub id_rsa.pub
ln config_dhoerl config
git config --global user.email "dhoerl@<company>.com"
git config --global github.user "dhoerl"
git config --global github.token "whatever_it_is"
ssh-add -D
Мне повезло с этим. Я также создал сценарий запуска в Xcode (для вас, пользователей Mac), поэтому он не будет строить мой проект, если у меня не будет надлежащей настройки (с его использованием git):
Запустите скрипт, расположенный после зависимостей (используя / bin / ksh в качестве оболочки):
if [ "$(git config --global --get user.email)" != "dhoerl@<company>.com" ]
then
exit 1
fi
EDIT: добавлены тесты для существования новых файлов и копирования старых файлов в / tmp для адресации комментария @naomik ниже.
Вам не нужно поддерживать два разных аккаунта для личных и рабочих. Фактически, Github рекомендует вам поддерживать единую учетную запись и помогает вам объединить оба.
Следуйте приведенной ниже ссылке, чтобы слить, если вы решите, что нет необходимости поддерживать несколько учетных записей.
https://help.github.com/articles/merging-multiple-user-accounts/
Использовать HTTPS:
изменить удаленный url на https:
git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git
, и вам хорошо идти:
git push
Чтобы убедиться, что Commit отображаются как выполненные USERNAME, можно настроить user.name и user.email для этого проекта тоже:
git config user.name USERNAME
git config user.email USERNAME@example.com
Этот ответ для новичков (не-git гуру). У меня недавно была эта проблема, и, возможно, ее только я, но большинство ответов, казалось, требовали довольно быстрого понимания git. После прочтения нескольких ответов на переполнение стека, включая этот поток, вот шаги, которые мне нужно предпринять, чтобы легко переключаться между учетными записями GitHub (например, предположим, что две учетные записи GitHub, github.com/personal и gitHub .com / work ):
ls -al ~/.ssh
файлов с расширением .pub
- ваши ssh-ключи, поэтому у вас должно быть два для учетных записей personal
и work
. Если есть только один или ни один, то время для генерации другого мудрого пропускает это. - Генерация ключа ssh : войдите в github (либо личный, либо работайте соответственно), перейдите к Настройки и скопируйте связанное письмо. Теперь вернитесь в терминал и запустите ssh-keygen -t rsa -C "the copied email"
, вы увидите: Создание пары ключей public / private rsa. Введите файл, в котором нужно сохранить ключ (/.../.ssh/id_rsa): id_rsa - это имя по умолчанию для скорого сгенерированного ключа ssh, чтобы скопировать путь и переименовать по умолчанию, например /.../.ssh/id_rsa_work
, если вы создаете для работы учетную запись. введите пароль или просто введите для игнорирования, и вы прочтете что-то вроде . Случайное изображение ключа: и изображение. done. Повторите этот шаг еще раз для своей второй учетной записи github. Убедитесь, что вы используете правильный адрес электронной почты и другое имя ключа ssh (например, id_rsa_personal), чтобы избежать перезаписи. На этом этапе вы должны увидеть два ключа ssh при повторном запуске ls -al ~/.ssh
. pbcopy < ~/.ssh/id_rsa_work.pub
, замените id_rsa_work.pub
на то, что вы назвали yours.Now, что наш ssh-ключ скопирован в буфер обмена, вернитесь к учетной записи github [убедитесь, что вы вошли в рабочую учетную запись, если вы скопировали ssh-ключ id_rsa_work
] и перейдите к настройкам - Ключи SSH и GPG и нажмите Новая кнопка SSH (не Новая клавиша GPG btw: D) некоторые заголовки для этого ключа, вставьте ключ и нажмите «Добавить ключ SSH». Теперь вы либо успешно добавили ключ ssh, либо заметили, что он был там, где все хорошо (или вы получили сообщение об ошибке, поскольку вы выбрали Новый ключ GPG вместо Новый ключ SSH : D). git config --global --edit
, чтобы отредактировать этот глобальный файл, если это открывает vim и вы не знаете, как его использовать, нажмите i
, чтобы войти в режим Вставки, отредактируйте файл, как показано ниже, и нажмите esc, а затем :wq
, чтобы выйти режим вставки: [inside this square brackets give a name to the followed acc.]
name = github_username
email = github_emailaddress
[any other name]
name = github_username
email = github_email
[credential]
helper = osxkeychain
useHttpPath = true
Done !, теперь, когда вы пытаетесь нажать или вытащить из репо, вам будет задан вопрос о том, какая учетная запись GitHub должна быть привязана к этому репо, и ее попросят только один раз , локальная конфигурация будет помнить эту ссылку, а не глобальную конфигурацию, чтобы вы могли работать с различными репозиториями, связанными с разными учетными записями, без необходимости редактировать глобальную конфигурацию каждый раз.
Подробная информация в http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/ , связанная с mishaba очень хорошо работает для меня.
С этой страницы:
$ touch ~/.ssh/config
Затем отредактируйте этот файл как нечто подобное (одна запись для каждой учетной записи):
#Default GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
Host github-COMPANY
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_COMPANY
Создав разные псевдонимы хостов для github.com в вашем ~ / .ssh / config и предоставляя каждому хосту псевдоним свой собственный ключ ssh, вы можете легко использовать несколько учетных записей github без путаницы. Это потому, что github.com отличает не пользователь, который всегда просто git, а ключ ssh, который вы использовали для подключения. Просто настройте свое отдаленное происхождение, используя собственные псевдонимы хоста.
Вышеприведенное резюме является любезностью комментариев к сообщению в блоге ниже.
Я нашел это объяснение самым ясным. И это работает для меня, по крайней мере, с апреля 2012 года.
http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github и-множественным счета /
# account_1
Host gitlab.com-account_1
HostName gitlab.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_account_1
Учетная запись 2 # Account2
Host gitlab.com-Account2
HostName gitlab.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_Account2
Учетная запись 3 # Account_3
Host github.com-Account3
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_Account_3
git remote add origin git@gitlab.com-account_1:group_name/repo_name.git
Учетная запись 2 git remote add origin git@gitlab.com-Account2:group_name/repo_name.git
Учетная запись 3 git remote add origin github.com-Account3:github_username/repo_name.git
Убедитесь, что имена IdentityFile такие же, как вы создали во время генерации ключа ssh.
blockquote>
Упростить и легко исправить, чтобы избежать путаницы.
Для пользователей Windows использовать несколько или разных учетных записей git для разных проектов.
Следующие шаги: Перейти Панель управления и поиск учетных данных Менеджер. Затем перейдите в Диспетчер учетных данных -> Учетные данные Windows
Теперь удалите узел git: https // github.com в разделе Общие учетные данные Заголовок
Это приведет к удалению текущих учетных данных. Теперь вы можете добавить любой проект через git pull, он попросит имя пользователя и пароль.
Когда вы сталкиваетесь с какой-либо проблемой с другой учетной записью, делаете тот же процесс.
Спасибо
В отличие от других ответов, где вам нужно выполнить несколько шагов для использования двух разных учетных записей github с одного компьютера, для меня это работало в два этапа.
Вам просто нужно:
1) создать общую и закрытую пару SSH для каждой вашей учетной записи в ~/.ssh
месте с разными именами и
2) добавить сгенерированные открытые ключи в соответствующую учетную запись в разделе Settings
>> SSH and GPG keys
>> New SSH Key
.
Для генерации общих и частных ключей SSH используйте следующую команду:
cd ~/.ssh
ssh-keygen -t rsa -C "email@work.com" -f "id_rsa_WORK"
ssh-keygen -t rsa -C "email@gmail.com" -f "id_rsa_PERSONAL"
В результате вышеприведенных команд id_rsa_WORK
и id_rsa_WORK.pub
будут созданы файлы для вашей рабочей учетной записи (ex-git.work.com) и id_rsa_PERSONAL
и id_rsa_PERSONAL.pub
для вашей личной учетной записи (ex-github.com).
После создания , скопируйте содержимое из каждого общедоступного файла [*.pub
) и сделайте второй шаг для каждой учетной записи.
PS: Не нужно делать запись хоста для каждой учетной записи git в ~/.ssh/config
файле, как указано в других ответах, если имя вашего двух аккаунтов отличается.