我的组织正在从Bitbucket切换到Github进行项目管理。今天,我试图通过使用SourceTree将我们最近的项目从Bitbucket转移到Github。我在项目中添加了第二个远程存储库(使用Github上目标存储库的URL),使所有内容保持最新,然后尝试将代码推送到存储库。弹出一个框,询问我的Github帐户的密码。我输入了(正确的)密码,然后单击“确定”,再次弹出对话框。我再次输入了密码(正确),它做了同样的事情。
我的用户名被正确识别,我的密码是正确的,我尝试更新SourceTree,因为我听说这是以前版本的问题。问题依然存在。
我正在使用SourceTree 2.3.1
答案 0 :(得分:30)
如果您使用GitHub进行双因素身份验证,则需要create a personal access token and use it with SourceTree:
要在SourceTree中使用GitHub的双因素身份验证,您只需使用访问令牌而不是密码即可。执行此操作的步骤如下:
- 转到GitHub中的个人访问令牌设置。
- 点击生成新令牌按钮。
- 将该令牌命名为描述性内容。
- 选择您要授予此令牌的范围。
- 点击生成令牌按钮。
- 复制令牌并将其用作托管存储库中的密码。
醇>您可以在GitHub's help here上找到有关此内容的更多信息。
Mac用户: 如果您的SourceTree继续要求输入密码,请转到终端并输入:
git config --global credential.helper osxkeychain
答案 1 :(得分:5)
如果已启用2FA,请遵循@Chris answer,要在SourceTree中使用Personal Access Token
,您需要在 SourceTree>偏好设置中添加带有此令牌的acc并提供以下信息:
之后,您可以克隆您的Github存储库。
答案 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凭据,更改协议等,但没有运气,直到......
我打开了我的钥匙串并在密码类别下搜索了bitbucket(可能与github相同,只是搜索github)。
我发现我的用户有多个访问密钥,因此我关闭了我的存储库,删除了&#34;应用程序密码&#34;的所有密钥。亲切,打开SourceTree首选项&gt;帐户&gt;删除了我的帐户并重新添加(像往常一样登录 - 我使用Basic和HTTPS)。
Keychain要求保存密码的权限,我说是的,现在我只看到一种密钥&#34;应用程序密码&#34;。
我从repo浏览器打开了我的存储库,嘿presto,没有更多的密码弹出窗口!
这让我误认了整整一个星期!如果这对你有帮助,你现在可以和我一起跳舞了:)
答案 4 :(得分:2)
就我而言,Sourcetree 登录屏幕在推送到 GitHub 时反复显示。从该屏幕登录失败。我最终确定这是由于 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所述之外,这可能会有所帮助(这是我最终使它工作的方式)
答案 8 :(得分:1)
还有一个愚蠢的原因:您可能已经更改了笔记本电脑上的凭据,但有另一台正在运行但不经常使用的开发 PC,它启动了 SourceTree 并经常使用旧凭据来轮询状态。
听起来很愚蠢,但我花了一些时间来解决:-)
答案 9 :(得分:0)
由于这个问题专门针对 SourceTree 和 Github,所以 2021 年的答案很简单。引用 bcr:
<块引用>确保我对存储在工具中的 GitHub 帐户使用 OAuth -> 选项 -> 身份验证
Add
(新帐户)。Refresh OAuth Token
。将打开一个浏览器页面 (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访问来修复它。
答案 15 :(得分:0)
我正在使用SSH密钥,但是SourceTree每次都要求我提供密码。
在Atlassian社区上找到的该解决方案对我有用:
git config credential.helper store
git pull
Voilà!
答案 16 :(得分:0)
这是我发现的(在驱动器C:中搜索“ sourcetree”后):
答案 17 :(得分:0)
如果您使用“用户名和密码”身份验证,则可以尝试更改为使用 SSH密钥进行身份验证。
每次我提交GitLab时都遇到过这种情况。当我改变身份验证方式: SSH密钥时,问题就解决了。
答案 18 :(得分:0)
在我的情况下,即使主项目使用ssh,也会发生默认为https的子模块。我通过在SourceTree的存储库设置中更改子模块的repo路径来修复它,以使用ssh路径而不是https。
答案 19 :(得分:-1)
转到Sourctree->工具->选项-> Git选择