git从终端推送错误的用户

Yin*_*fei 102 git ssh github

我有一个git和我的终端问题.

这是一个向您展示我的问题的图库:http://imgur.com/a/6RrEY

当我从我的终端推送提交时,git说我用另一个用户名推送它们,那是我的组织(我公司)的用户,根本没有提交,似乎它不属于任何人:( 查看图库第一张图片)

但是当我使用Github for mac时,这种情况不会发生,在Feed中我看到了自己提交的提交.

这个问题也影响了我的个人存储库,我的终端说我没有权限推送这些存储库的提交(这显然是错误的),因为它试图用这个用户推送它:( 查看图库第二张图片)

你猜怎么着 ?对于Mac来说,Github也不会发生这种情况.

几天前我把我的电脑变成了一个全新的电脑,所以我重置了我所有的github的ssh密钥并且只留下了一个由Github for Mac生成的新密钥,所以我不认为有一些ghost用户/ ssh密钥被隐藏了在某个地方,这个硬盘是全新的:( 查看图库第三张图片)

我的.gitconfig文件全部清除,只有我的凭据:( 查看图库第四张图片)

我真的不明白,帮助,StackOverflow,你是我唯一的希望.

(我为我可怜的Gimp技能和星球大战参考道歉)

编辑: ssh-add -l只显示由github为mac创建的好的ssh密钥,我只有一个github帐户

EDIT2: ssh -T git@github.com认出我是好用户.

EDIT3:经过几次测试后,看起来我的终端用我的用户名进行提交,但是用另一个提交它们,Github用于mac提交并推送好的用户名.这种情况发生在我拥有/制作的每个仓库(甚至是新的)那些).

EDIT4:在个人存储库中git log --pretty="%h %an %ae"显示我的好用户名

编辑5:没有任何环境变量的迹象会覆盖我的凭据env.即使我尝试设置具有良好凭据问题的变量仍然存在.

编辑6:如果我强迫用户在/.git/config存储库的路径中,事情正常工作,但我认为这不是一个好的选择:http://USER@github.com/USER/REPO.git

编辑7:我们删除了为我推送提交的git用户,这带来了另一个错误:remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

最终编辑:我用自制软件安装了git,打字 git config --global push.default simple ,现在即使不强迫用户也需要我的凭据.真奇怪.谢谢大家的帮助,你们真棒!

小智 151

我刚刚在工作中遇到了这个问题.安装xcode时随附mac或内置的内置git会在keychain中缓存git凭据.我的修复是:

启动钥匙串访问(通过cmd + space启动聚光灯,键入keychain,按回车键)

在左上方的钥匙串下,选择"登录"在左侧的类别下,选择"密码"

找到名称"github"并删除它.

  • 先生,我欠你的债 (3认同)
  • 确保在此处删除所有github条目并设置登录配置*git config --global user.name <name>*git config --global user.email <email> (2认同)

Nit*_*hin 34

github通过它看到的ssh密钥识别你,而不是通过git中的任何设置识别你.

因此,当您尝试从个人帐户推送时,您需要确保您的工作帐户的密钥环不在您的密钥环中,反之亦然.

使用ssh-add -l以确定哪些键是在你的钥匙圈,并ssh-add -d <keyfile>从你的钥匙圈中删除键,如果dosent工作删除了"不必要的" SSH密钥~/.ssh/config.

资源

  • 这是解释为什么尽管我的`user.email`设置正确但仍持续使用错误的github帐户的唯一答案.希望我可以五次投票. (5认同)
  • 就我而言,删除 ssh 密钥就像一个魅力“ssh-add -D” (4认同)
  • “github 通过它看到的 ssh 密钥来识别你,而不是通过 git 的任何设置” - 恕我直言,这是不准确的,而且非常具有误导性/错误。当您使用 SSH 与 github 交互时,SSH 会检查权限。但是,无论 SSH 密钥如何,github 都会根据电子邮件 gitconfig 确定提交的作者身份。 (2认同)

Yin*_*fei 17

尽管其他用户提供了很多选择,但解决这个问题的唯一方法是完全重新安装git并键入git config --global push.default simple以重写好的凭据.

  • `git config --system --unset credential.helper`为我工作,我现在要求再次推送我的GitHub凭据,并且可以提供正确的用户ID和密码. (35认同)
  • @CoDEmanX 你的答案是对我有用的唯一答案。对于遇到此问题的其他人来说,这是因为我们在 github 上使用 2FA,我需要首先从 github gui 生成一个令牌,并在重置本地凭据后将其用作命令行中的密码!查看[https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/](https://help.github.com/articles/creating-a -personal-access-token-for-the-command-line/) 了解详细信息 (2认同)

Von*_*onC 14

看起来我的终端使用我的用户名进行提交,但是将其推送到另一个用户名

作者和提交者姓名和电子邮件(对GitHub很重要)来自:

git config user.name
git config user.email
Run Code Online (Sandbox Code Playgroud)

但是,正如在git config和中提到的那样git commit-tree,这些值可以被环境变量覆盖:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL
Run Code Online (Sandbox Code Playgroud)

所以仔细检查那些变量.

如果我强迫用户.git/config使用存储库,事情会正常工作,但我认为这不是一个好选择.

但它应该是一个很好的解决方案.
使用https网址时,我始终在其中指定用户,以确保使用正确的用户进行身份验证.

http://USER@github.com/USER/REPO.git
Run Code Online (Sandbox Code Playgroud)

  • 对不起,如果我清楚,我的意思是,如果我强迫用户在路径上工作,如:`http:// USER @ github.com/USER/REPO.git` (2认同)

AED*_*WIP 10

屁股好痛啊!

问题:

  1. 在 git hub 上创建一个 repo
  2. 克隆到本地机器
  3. 不能推403。

由于未知原因 git push 使用了错误的用户。我有几个不同的 git hub 用户 ID。我在 2 家不同的公司工作,也有学生证

我在 mac 上工作。这是我最后做的

1) 删除 credential.helper

  • 凭证助手是如何设置为 osxkeychain 的
  • 当我启动钥匙串时,单击登录名、密码并搜索 github 我发现了 3 个条目。我不知道钥匙串怎么可能知道使用哪个

一种。您需要弄清楚 credential.helper 的配置位置

git config --local credential.helper
git config --global credential.helper
git config --system credential.helper
Run Code Online (Sandbox Code Playgroud)

湾 一旦找到正确的 fig 文件,请按如下方式将其删除

git config --global --unset credential.helper
Run Code Online (Sandbox Code Playgroud)

现在在我的本地仓库中,我破解了 .git/config 文件

我变了

    url = https://github.com/aedavids/lab3RotationProject.git
Run Code Online (Sandbox Code Playgroud)

    url = https://myGitHubUserId@github.com/aedavids/lab3RotationProject.git
Run Code Online (Sandbox Code Playgroud)


msh*_*eer 8

首先运行临时解决方案, killall ssh-agent然后添加为您需要使用的帐户生成的ssh密钥ssh-add ~/.ssh/id_4shameer

当我们得到类型错误时,它将帮助我们处理多个github帐户 ERROR: Permission to user/repo-git.git denied to username.

  • 我在从 *MacOS 钥匙串 * 中删除了任何 *Github* 条目后这样做了,它运行良好。两点,在 ```killall``` 之后,*ssh-agent* 必须用 ```eval "$(ssh-agent -s)"``` 和 ```ssh-add 重新启动``` 命令必须使用 ```sudo``` 执行。 (2认同)

小智 8

我正在使用Windows 10,今天也遇到了同样的问题。在我的情况下,我的其他用户凭据由Windows凭据管理器保存。因此,使用以下命令删除/取消设置git凭证git config --global --unset credential.helper

没有帮助。我必须按照以下方法在Windows中手动删除条目,

开始->控制面板--->用户帐户--->管理您的凭据---> Windows凭据

然后搜索git:https : //github.com之类的条目并将其删除。在那之后它工作正常。


小智 7

如果您使用的是MAC,请转到Keychain Access并删除您不希望git访问的用户条目.


Neo*_*xn0 6

这是调试和修复 ssh url 的方法

首先,通过 ssh 检查哪个用户:

ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)

你好<your_current_github_username>!您已成功通过身份验证,但 GitHub 不提供 shell 访问权限。

使用上述内容登录 GitHubyour_current_github_username 检查所有配置的 ssh 密钥:https ://github.com/settings/keys

方法一:

从中删除 ssh 密钥your_current_github_username

方法二:

方法三:

如果在您的计算机上找不到公钥(或者您丢失了它),则创建一个新的 ssh 密钥并将ssh-keygen其放置在此处:~/.ssh/id_new_keyyyy

eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_new_keyyyy
Run Code Online (Sandbox Code Playgroud)


wat*_*tch 5

我的解决方案是在 github 的 ~/.ssh/config 文件中添加一个条目。我必须这样做是因为:

  1. 我有多个 github 帐户具有相同的密钥(不要这样做!)
  2. 当您使用 ssh 'git Push' 时,您的计算机默认获取 id_rsa 并将其用作其 ssh 身份。
  3. github 无法(不出所料)消除您所指的帐户的冲突,因为它是根据所提供的密钥来建立帐户的,如果绑定到多个帐户,则会导致这样的痛苦。致命的是,在很长一段时间里,我一直在逃避惩罚,而事情就这样顺利解决了。

我添加的条目是:

Host github.com
    Hostname github.com
    Port 22
    User waterproofpatch
    IdentityFile ~/.ssh/id_rsa_waterproofpatch
Run Code Online (Sandbox Code Playgroud)

我创建了一个密钥,该密钥是我的帐户唯一的,名称为 id_rsa_waterproofpatch。我的 ssh 配置中的此条目指定,对于与 github.com 的连接,我希望提供此密钥。

另一个解决方案可能是我登录另一个帐户,删除重复的 ssh 密钥。