git推着错误的用户从terminal
我有一个与git和我的terminal问题。
这是一个画廊向您展示我的问题: http : //imgur.com/a/6RrEY
当我从我的terminal推送提交时,git说我用另一个用户名推送他们,这是我的组织(我的公司)的一个用户,根本没有任何提交,似乎它不属于任何人:( 检查画廊第一张图片)
但是,当我使用Github for mac时,并没有发生这种情况,在feed中我看到了自己提交的提交。
这个问题也影响到我的个人仓库,我的terminal说我没有权限推这些仓库的提交(这显然是错误的),因为它试图用这个用户推它:( 检查画廊第二图片)
你猜怎么了 ? Github也不会发生这种情况。
我几天前把电脑换成了一台全新的电脑,所以我重新设置了所有的github的ssh密钥,只留下了Github为Mac生成的一个新密钥,所以我不认为有一些隐藏的ghost用户/ ssh密钥隐藏某处,这个硬盘是全新的:( 检查画廊第三张图片)
我的.gitconfig文件都清楚,只有我的凭据:( 检查画廊第四图)
我真的不明白,帮助,StackOverflow,你是我唯一的希望。
(我为我可怜的GIMP技能和星球大战参考而道歉)
编辑: ssh-add -l
只显示由github为mac创build的良好的ssh密钥,我只有一个github帐户
编辑2: ssh -T git@github.com
承认我是好用户。
编辑3:几个testing后,它看起来像我的terminal提交我的用户名,但推它们与另一个,Github的Mac提交,并推出了良好的用户名。这种情况发生在每个回购我有/使(甚至新那些)。
编辑4:在个人存储库中git log --pretty="%h %an %ae"
显示我的好用户名
编辑5:没有迹象的环境variables,将覆盖我的环境我的信用证 。 即使我试图设置这些variables与良好的凭据问题仍然存在。
编辑6:事情正常工作,如果我强制用户的存储库/.git/config
的path,但我不认为这是好的select: http://USER@github.com/USER/REPO.git
编辑7:我们删除了推送提交给我的git用户,这带来了另一个错误: remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'
remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'
最终编辑:我用自制软件安装了git,input git config --global push.default simple
,现在即使不强制用户也需要我的凭据。 真奇怪。 谢谢大家的帮助,你们是好人!
我刚刚在工作中遇到了这个问题。 内置git附带mac或安装xcode时,会在keychain中cachinggit凭证。 对我来说,解决的办法是:
启动钥匙串访问(通过CMD +空间启动聚光灯,键入钥匙串,按回车键)
在左上方的钥匙串下,select“login”在左边的类别下,select“密码”
find名字“github”并删除它。
尽pipe所有其他用户提供的很好的select,解决这个问题的唯一方法是完全重新安装git,然后inputgit config --global push.default simple
地重写好的证书。
它看起来像我的terminal提交我的用户名,但推他们与另一个
作者和提交者的姓名和电子邮件(这是重要的GitHub)来源于:
git config user.name git config user.email
但是,正如在git config
和git commit-tree
提到的那样,这些值可以被环境variables覆盖:
GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL
所以仔细检查这些variables。
如果我强制用户在一个版本库的
.git/config
中的东西恢复正常,但我不认为这是好的select。
但它应该是一个很好的解决scheme。
当使用httpsurl时,我总是指定用户,以确保用正确的用户进行身份validation。
http://USER@github.com/USER/REPO.git
临时解决scheme是先运行killall ssh-agent
然后添加为你需要使用ssh-add ~/.ssh/id_4shameer
的帐号生成的ssh密钥
当我们得到ERROR: Permission to user/repo-git.git denied to username.
types的ERROR: Permission to user/repo-git.git denied to username.
时,它将帮助我们处理多个github帐户ERROR: Permission to user/repo-git.git denied to username.
github通过它看到的ssh密钥识别你,而不是通过git的任何设置。
因此,当您尝试从您的个人帐户推送您的工作帐户的ssh密钥时,您需要确保您的工作帐户的ssh密钥不在您的钥匙圈中,反之亦然。
使用ssh-add -l
来确定你的钥匙圈里有哪些钥匙,用ssh-add -d <keyfile>
从你的钥匙圈中删除一个钥匙,如果它的工作量从~/.ssh/config
删除了'不想要的'ssh钥匙。
资源
如果你使用的是MAC,那么去钥匙串访问 ( Keychain Access),并删除你不想要访问的用户的条目。