SourceTree一直在询问Github密码

时间:2016-07-20 19:15:16

标签: git github bitbucket atlassian-sourcetree sourcetree

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

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

我正在使用SourceTree 2.3.1

20 个答案:

答案 0 :(得分:30)

如果您使用GitHub进行双因素身份验证,则需要create a personal access token and use it with SourceTree

  

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

     
      
  1. 转到GitHub中的个人访问令牌设置。
  2.   
  3. 点击生成新令牌按钮。
  4.   
  5. 将该令牌命名为描述性内容。
  6.   
  7. 选择您要授予此令牌的范围。
  8.   
  9. 点击生成令牌按钮。
  10.   
  11. 复制令牌并将其用作托管存储库中的密码。
  12.         

    您可以在GitHub's help here上找到有关此内容的更多信息。

Mac用户: 如果您的SourceTree继续要求输入密码,请转到终端并输入:

git config --global credential.helper osxkeychain

答案 1 :(得分:5)

如果已启用2FA,请遵循@Chris answer,要在SourceTree中使用Personal Access Token,您需要在 SourceTree>偏好设置中添加带有此令牌的acc并提供以下信息:

  • 验证类型:基本
  • 用户名:{your-github-account}
  • 密码:{您的个人访问令牌}
  • 协议:HTTPS

之后,您可以克隆您的Github存储库。

enter image description here

答案 2 :(得分:3)

打开终端并克隆你的回购。存储库网址必须有你的usedid, 例如:

$ git clone https://<username>@github.com/<userId>/<reponame>.git
$ git clone https://mark@github.com/mak123/<reponame>.git

然后将克隆的文件夹拖放到sourceTree窗口中。您也可以单击“+ New Repository”按钮,然后从菜单中选择“Add Existing Local Repository”。 它可能会再次要求输入密码,但这次它会被添加到您的钥匙串中。

答案 3 :(得分:2)

更新后我有类似的事情;我尝试重新添加我的bitbucket凭据,更改协议等,但没有运气,直到......

  1. 我打开了我的钥匙串并在密码类别下搜索了bitbucket(可能与github相同,只是搜索github)。

  2. 我发现我的用户有多个访问密钥,因此我关闭了我的存储库,删除了&#34;应用程序密码&#34;的所有密钥。亲切,打开SourceTree首选项&gt;帐户&gt;删除了我的帐户并重新添加(像往常一样登录 - 我使用Basic和HTTPS)。

  3. Keychain要求保存密码的权限,我说是的,现在我只看到一种密钥&#34;应用程序密码&#34;。

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

    这让我误认了整整一个星期!如果这对你有帮助,你现在可以和我一起跳舞了:)

答案 4 :(得分:2)

就我而言,Sourcetree 登录屏幕在推送到 GitHub 时反复显示。从该屏幕登录失败。我最终确定这是由于 OAuth 令牌过期造成的,修复起来很简单。

  1. 导航到 GitHub 帐户配置屏幕:工具 > 选项 > 身份验证
  2. 点击您的 GitHub 帐户,然后点击编辑
  3. 编辑主机帐户对话框中,点击刷新 OAuth 令牌按钮

答案 5 :(得分:1)

SourceTree版本2.4.8.0

我的问题似乎是SourceTree和GitHub之间的设置顺序。我首先设置了SourceTree,然后点击了所有&#34;稍后设置&#34;选项。

轻松修复 - 卸载并重新安装SourceTree。非显而易见的位需要手动删除实际的程序文件。

来自任何&#34; SourceTree.exe&#34;快捷方式,打开文件位置。我的分叉是&#34; C:\ Users \ myusername \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Atlassian&#34;快捷方式指向另一个快捷方式。

打开该快捷方式的文件位置。我最终在&#34; C:\ Users \ myusername \ AppData \ Local \ SourceTree&#34;。删除整个&#34; SourceTree&#34;夹。上一级到&#34; ... \ Local&#34;并删除&#34; Atlassian&#34;文件夹也是。

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

毕竟,SourceTree要求我的GitHub凭据两次,有两个不同的对话框,然后停止并工作!没有更多无限循环。祝你好运!

答案 6 :(得分:1)

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

问题在于SourceTree的嵌入式Git客户端随附git-credential-manager v1.12,该版本不再与Github配合使用,因为他们在网站上禁用了TLS 1.1。您需要获取git-credential-manager v1.14。最简单的方法是分别安装Git客户端的当前副本,然后切换SourceTree以使用该副本(“系统git”)而不是其嵌入式客户端。另外,您可以通过使用Microsoft的最新版本替换其文件来更新嵌入式客户端中的git-credential-manager。

答案 7 :(得分:1)

除了在GitHub上设置个人访问令牌并执行上面A_01所述之外,这可能会有所帮助(这是我最终使它工作的方式)

  • 我确定拥有最新版本的Sourcetree
  • 我已升级到最新版本并使用了System Git(工具->选项-> Git)
  • 已升级到最新的Windows版Git凭据管理器(这是通过我下载并双击的安装程序,非常简单)
  • 确保我对存储在工具->选项->身份验证中的GitHub帐户使用了OAuth
  • 确保在工具->选项-> Git上选中“允许Sourcetree使用Git凭据管理器管理我的凭据”框(这很重要!)
  • 然后,当我触发GitHub对话框(通过推送一个新分支,仅作为示例)时,我在那里登录(这是它过去失败的地方)。
  • 接下来我得到了2因素验证对话框,并且代码已按预期发送到我的手机。我能够通过手机将代码输入此对话框。

答案 8 :(得分:1)

还有一个愚蠢的原因:您可能已经更改了笔记本电脑上的凭据,但有另一台正在运行但不经常使用的开发 PC,它启动了 SourceTree 并经常使用旧凭据来轮询状态。

听起来很愚蠢,但我花了一些时间来解决:-)

答案 9 :(得分:0)

由于这个问题专门针对 SourceTree 和 Github,所以 2021 年的答案很简单。引用 bcr:

<块引用>

确保我对存储在工具中的 GitHub 帐户使用 OAuth -> 选项 -> 身份验证

  • 去那里。选择 Add(新帐户)。
  • 选择 OAuth。
  • 点击 Refresh OAuth Token。将打开一个浏览器页面 (github.com),请求更新您的令牌。
  • 登录接受。 SourceTree 将立即响应,确认 github.com 提供的令牌。

答案 10 :(得分:0)

如果您没有使用GitHub 2FA,则向您提供密码的另一个原因是:

你的GitHub repo url是一个ssh,而不是https 由于git没有找到你的ssh密钥(或者你的ssh密钥没有注册到你的GitHub帐户),它会失败回到帐户/密码机制。

如果您使用的是2FA(以及https网址),则为need a personal token as a password

答案 11 :(得分:0)

就我而言,Sourcetree 要求的密码是 ssh 私钥密码。如果我从 ssh 密钥中删除密码,则不会出现此提示。

然而,由于我想要密码在那里,我一直在调查为什么它不接受我的 ssh 密钥密码。

原来有皱纹。如果您有多个具有不同密码的 ssh 私钥,Sourcetree 将为您提供每个密码的密码提示

这样想 - 如果您的系统中有一个全新的 shell,并且您刚刚启动了 ssh-agent,并运行了 ssh-add,那么您得到的密码提示是什么?对于每一个这样的密码提示,Sourcetree 都会给你这个对话框。事实上,如果您按照在 shell 中将密码添加到 ssh-add 中的相同顺序将密码添加到对话框中,这将起作用。事实上,我猜 Sourcetree 在后台做的完全一样。

所以我的最终解决方案是 1) 将密码保留在 ssh 密钥上 2) 使所有这些密码相同。所以现在Sourcetree会给我一个密码提示,输入ssh私钥密码就可以了。

答案 12 :(得分:0)

为了将来参考,我通过将Sourcetree中使用的GIT系统从Embedded更改为System解决了这个问题。

如何更改git系统:
1.找到 Options 子菜单(位于 Tools 菜单下),然后单击它以查看 Options 弹出窗口
2.在选项设置弹出窗口中,找到 Git 标签,然后单击它以查看 Git 设置
3.找到 Git版本设置,然后检查其中使用的版本。就我而言,我将其更改为 system ,因为以前我使用的是 Git bash cmd ,并且看起来嵌入在Sourcetree中的git相互冲突。
4.重新启动Sourcetree

答案 13 :(得分:0)

Mac: 这个解决方案对我有用。 成功克隆代码后,打开终端并运行此代码

# Only run examples in interactive R sessions
if (interactive()) {

    library(wordcloud2)

    n <- 1

    # Define UI
    ui <- fluidPage(

        # Application title
        titlePanel("titlePanel"),

        sidebarLayout(

            # Sidebar with a slider input
            sidebarPanel(
                textInput("user_input", h3("Field example"), 
                          value = "value"),
                numericInput('size', 'Size of wordcloud', n)
            ),

            # Show a plot of the generated distribution
            mainPanel(
                tabsetPanel(type = "tabs",
                            tabPanel("DT + wordcloud2", DTOutput('tbl'),
                                     wordcloud2Output('wordcloud2')),
                            tabPanel("Plot", plotOutput("plot")),
                            tabPanel("Summary",verbatimTextOutput("summary")),
                            tabPanel("about", tableOutput("table"))))))

    # Server logic
    server <- function(input, output) {

        output$tbl = renderDT(
            iris, options = list(lengthChange = FALSE))

        output$wordcloud2 <- renderWordcloud2({
            wordcloud2(demoFreq, size=input$size)})
    }

    # Complete app with UI and server components
    shinyApp(ui, server)
}

答案 14 :(得分:0)

就我而言,我使用基于HTTPS的url克隆了存储库。然后,我使用SSH密钥为我的githib帐户配置了2要素身份验证。因此,每当我进行更改时,都会显示对话框以提供密码。

我通过右键单击SourceTree上的项目回购菜单来启用SSH访问来修复它。

enter image description here

答案 15 :(得分:0)

我正在使用SSH密钥,但是SourceTree每次都要求我提供密码。

在Atlassian社区上找到的该解决方案对我有用:

  1. 打开终端,进入您的项目目录
  2. 键入git config credential.helper store
  3. 键入git pull
  4. 输入用户名/密码(如果需要)

Voilà!

答案 16 :(得分:0)

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

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

答案 17 :(得分:0)

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

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

答案 18 :(得分:0)

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

答案 19 :(得分:-1)

转到Sourctree->工具->选项-> Git选择