SourceTree不断询问Github密码

SourceTree不断询问Github密码,git,github,bitbucket,atlassian-sourcetree,sourcetree,Git,Github,Bitbucket,Atlassian Sourcetree,Sourcetree,我的组织正在从Bitbucket切换到Github进行项目管理。今天,我尝试使用SourceTree将我们最近的项目从Bitbucket转移到Github。我向项目中添加了第二个远程存储库(使用Github上目标存储库的URL),使所有内容都处于最新状态,然后尝试将代码推送到存储库中。弹出一个框,询问我的Github帐户的密码。我输入了(正确的)密码,然后单击“确定”,对话框再次弹出。我再次(正确地)输入了密码,它也做了同样的事情 我的用户名识别正确,密码正确,我尝试更新SourceTree,因

我的组织正在从Bitbucket切换到Github进行项目管理。今天,我尝试使用SourceTree将我们最近的项目从Bitbucket转移到Github。我向项目中添加了第二个远程存储库(使用Github上目标存储库的URL),使所有内容都处于最新状态,然后尝试将代码推送到存储库中。弹出一个框,询问我的Github帐户的密码。我输入了(正确的)密码,然后单击“确定”,对话框再次弹出。我再次(正确地)输入了密码,它也做了同样的事情

我的用户名识别正确,密码正确,我尝试更新SourceTree,因为我听说这是以前版本的问题。问题依然存在

我正在使用SourceTree 2.3.1

如果您没有使用,询问您密码的另一个原因是:

您的GitHub repo url是ssh url,而不是https url。
由于git找不到您的ssh密钥(或者您的ssh密钥未注册到您的GitHub帐户),所以它会返回到帐户/密码机制


如果您使用的是2FA(和https url),那么您需要。

如果您使用的是GitHub的双因素身份验证,那么您需要:

要在SourceTree中使用GitHub的双因素身份验证,只需使用访问令牌而不是密码。执行此操作的步骤如下所示:

  • 转到GitHub中的个人访问令牌设置
  • 单击生成新令牌按钮
  • 将标记命名为描述性的名称
  • 选择要授予此令牌的作用域
  • 单击生成令牌按钮
  • 复制令牌并将其用作托管存储库中的密码
  • 您可以在上找到有关此的更多信息

    Mac用户: 如果SourceTree不断询问密码,请转到终端并键入以下内容:


    在我的例子中,发生这种情况的子模块默认为https,即使主项目使用ssh。我通过在SourceTree的存储库设置中将子模块的repo路径更改为使用ssh路径而不是https来修复它。

    打开终端并克隆您的repo。存储库url必须具有您的usedid, 例如:

    $git clone https://@github.com//.git
    $git克隆https://mark@github.com/mak123/.git
    
    然后将克隆的文件夹拖放到sourceTree窗口中。您也可以单击“+新建存储库”按钮,然后从菜单中选择“添加现有本地存储库”。
    它可能会再次要求输入密码,但这次它会被添加到您的钥匙链中。

    更新后,我遇到了类似的问题;我尝试重新添加我的bitbucket凭据、更改协议等,但没有成功,直到

  • 我打开钥匙链,在密码类别下搜索bitbucket(可能与github相同,只需搜索github)

  • 我发现我的用户有多个访问密钥,所以我关闭了我的存储库,删除了所有“应用程序密码”类型的密钥,打开SourceTree preferences>Accounts>removed my account并重新添加它(像往常一样登录-我使用带HTTPS的Basic)

  • Keychain请求获得保存密码的权限,我说是的,现在我只看到一个类似“应用程序密码”的密钥

  • 我从repo浏览器打开了我的存储库,嘿,presto,没有更多的密码弹出窗口


    这让我烦了整整一个星期!如果这对您有帮助,您现在可以和我跳支舞:)

    SourceTree 2.4.8.0版

    对我来说,问题似乎是SourceTree和GitHub之间的设置顺序。我先设置SourceTree,然后单击所有“稍后设置”选项

    一个简单的修复方法-卸载并重新安装SourceTree。不明显的一点是需要手动删除实际的程序文件

    从任何“SourceTree.exe”快捷方式中,打开文件位置。我的分支位于“C:\Users\myusername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Atlassian”,其中快捷方式指向另一个快捷方式

    打开该快捷方式的文件位置。我最终在“C:\Users\myusername\AppData\Local\SourceTree”中结束。删除整个“SourceTree”文件夹。升级一级至“…\Local”,并删除“Atlassian”文件夹

    现在卸载SourceTree。确保GitHub的设置符合您的要求(对我来说,我还创建并保存了一个用于SourceTree设置的SSH密钥)。使用所有正确的凭据重新安装SourceTree,指向正确的存储库等

    在所有这些之后,SourceTree使用两个不同的对话框两次询问我的GitHub凭据,然后停止并开始工作!不再有无止境的循环。祝你好运

    如果您正在使用“用户名和密码”身份验证,您可以尝试更改为使用SSH密钥进行身份验证

    每次提交GitLab时,我都会遇到这种情况。当我更改身份验证方式:SSH密钥时,问题已经解决了。

    这就是我发现的(在我的驱动器C:中搜索“sourcetree”后):

  • 卸载SourceTree
  • 删除文件夹C:\Users[用户名]\AppData\Local\Atlassian\SourceTree
  • 删除文件夹C:\Users[用户名]\AppData\Local\SourceTree
  • 重新安装SourceTree

  • 安德鲁·马吉尔(Andrew Magill)给出的解决方案对我有效,该解决方案摘自以下来源:

    问题是SourceTree的嵌入式Git客户端附带Git credential manager v1.12,它不再适用于Github,因为它们在其站点上禁用了TLS 1.1。您需要获得git credential manager v1.14。最简单的方法是单独安装Git客户端的当前副本,然后切换SourceTree以使用该(“系统Git”)而不是其嵌入式客户端。或者,您可以更新git凭证管理
    git config --global credential.helper osxkeychain
    
    $ git clone https://<username>@github.com/<userId>/<reponame>.git
    $ git clone https://mark@github.com/mak123/<reponame>.git
    
    git config --global credential.helper osxkeychain