GitKraken

时间:2016-12-14 14:28:11

标签: git gitkraken

好的,所以我在另一个房间的服务器某个地方有一个git repo,我以前一直在使用SourceTree,但它对index.lock问题非常讨厌,显然这是大多数开发人员使用SourceTree时遇到的最常见问题。虽然我发现如果我等了几分钟到半天它会自行修复,但我没有时间等待,我认为它完全违背了使用git客户端的目的。

但是,这不是关于SourceTree ...所以,我发现GitKraken,它看起来很酷,我从来没有index.lock的问题。唯一的问题是我无法推送到另一个房间的服务器。我配置了我的ssh密钥。我可以推/拉到github / bitbucket帐户,但不能下一个房间。如果您遇到过这样的问题,或者您对我如何解决问题有一点了解,请告诉我。我已经与支持团队取得了联系,但反应非常紧张。

12 个答案:

答案 0 :(得分:22)

似乎在我的Mac上,如果我没有运行ssh-add -k ~/.ssh/id_rsa,那么我会收到关于使用错误的ssh密钥的错误。

这似乎也适用于Ubuntu(18.04)。

答案 1 :(得分:9)

在macOS上,我有一个私钥/公钥对,GitKraken成功地使用它来推送到一个Bitbucket存储库。 公钥文件〜/ .ssh / id_rsa.pub格式类似于Josh Patterson的答案:

ssh-rsa AAAAB3NzaC1yc2...8swZ0Ew==

我创建了第二个bitbucket存储库。 在某个时候gitKraken不再能够推送到第一个回购。 我仍然可以从终端命令行git push到第一个仓库,手动输入密码。

GitKraken说:“配置的SSH密钥格式无效。请确保您的密钥有效且是RSA类型的密钥。”

类似于Sun的回答,我去了GitKraken首选项/身份验证/常规。 与Coming Sun的答案不同,我已经有一个私钥/公钥,并且不想生成新的密钥对。 相反,我选择了“使用本地SSH代理”。这为我修复了GitKraken。

答案 2 :(得分:7)

  1. GitKraken->首选项->身份验证->生成新的私钥/公钥;
  2. 将新的公钥添加到您的git服务器。

答案 3 :(得分:3)

已经有很多答案了,我认为大多数答案都非常有帮助。我仍将在此处添加更多信息,因为我认为没有任何答案可以完全解决问题。

这就是我从一开始就坐在MacOS上解决此问题的方法。

  1. 运行ssh-keygen以生成密钥。我确实提供了一个密码短语。
  2. 运行ssh-add -K ~/.ssh/id_rsa将我的身份保存在本地ssh代理中。 这很重要。在此请注意,它是一个大写的-K,这意味着我也想将密码短语存储在本地ssh代理中,这将导致它进入store my passphrase in the keychain,因此我不需要一直都重新输入它整洁!
  3. Inside Gitkraken,转到“首选项->身份验证...->常规”
  4. 选中“使用本地SSH代理”。这将告诉Gitkraken在步骤2中使用我的代理。如果您不这样做,则Gitkraken将使用它自己的捆绑ssh代理,我认为这是导致大多数人问题的原因
  5. 将您的~/.ssh/id_rsa.pub公钥添加到服务器(bitbucket.org,azure devops,github或w / e)。
  6. 现在,当您从终端执行git fetch或从Gitkraken执行git fetch时,它们都应该可以工作。 Gitkraken将使用您计算机上已配置的ssh代理,以成功对我们进行身份验证。

希望这对您有所帮助。

更新:我还必须在ssh-add -K ~/.ssh/id_rsa中包含~/.bash_profile才能使其自动加载,否则,您必须在每次重新启动计算机时都运行该命令。 < / p>

答案 4 :(得分:1)

因此,以防万一这对其他人(或者我曾经忘记的我)有所帮助,看来GIT Kraken对其公钥格式非常挑剔,并且不支持我认为的标准格式。我通常会看到类似以下的键:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20181204"
AAAAB3NzaC1yc2EAAAABJQAAAQEA5kpsxjtSZ4kMyKIBy0ASQShN/BSAEa7d4lrL
...
hA2TX0L2fLKDkpzCngkDgGbLDxj5dXTN4gpnZdr7lzMciFQu0uhfTLmeYgi1nFOi
KfJ+cQWg3uOHQ0zd8/2GyvfARWy3nZDFoLSQTrbErkX8swZ0Ew==
---- END SSH2 PUBLIC KEY ----

Git Kraken似乎坚持使用这种格式:

ssh-rsa AAAAB3NzaC1yc2...8swZ0Ew==

您可以看到这是“相同”键,但是它必须采用更简单的格式,Git Kraken才能满意。

谢谢,乔什

答案 5 :(得分:1)

我通过结合使用gabeios答案并同时打开和关闭“使用本地ssh代理”选项(gitkraken首选项>身份验证>“使用本地ssh代理”)来使我的工作正常。

我将其关闭并尝试了gabeios答案,但它不起作用,但随后将其打开并再次尝试了gabeios答案。出于某种原因,两者的某种结合对我起作用。我在Mac上。希望对您有所帮助。

答案 6 :(得分:1)

gabeio的答案有效。为了避免每次在终端中调用ssh-add -K ~/.ssh/id_rsa,可以将其添加到配置文件中。

您可以将其放入~/.bash_profile

  

ssh-add -K ~/.ssh/id_rsa放入您的~/.bash_profile

但是它需要打开终端以执行此行。

就我而言,我将其添加到/etc/profile中。在ssh-add -K ~/.ssh/id_rsa的底部添加行/etc/profile。这是终端中的说明:

  • 更改文件$sudo chmod 644 /etc/profile的权限
  • 编辑文件$sudo nano /etc/profile
  • 将此行添加到文件ssh-add -K ~/.ssh/id_rsa的底部。
  • 关闭并保存文件
  • 重新启动。

它对我有用,而无需每次都打开终端。希望能有所帮助。

答案 7 :(得分:0)

首选项...>身份验证

我只需要切换到

  

[]使用本地SSH代理

代替使用我本地ssh的路径

答案 8 :(得分:0)

确保正确设置了遥控器。 Gitkraken将允许您通过粘贴“ git clone”命令进行克隆,但会错误地将其设置为原点

答案 9 :(得分:0)

如果您尝试访问 Github 中的存储库,但是它不起作用。

这对我有用:

首先,查看存储库中是否具有“写访问权限”

(Setting -> Manage Access)

如果错误仍然存​​在:

  1. 断开Gitkraken中的Github帐户

    (File-> Preferences -> Authentication -> Github -> Disconnect)

  2. 在Github中重新访问Gitkraken

    (Settings-> Applications -> Authorized Oauth Apps -> Gitkraken -> Revoke)

  3. 再次将Gitkraken连接到Github

    (make sure that you give permission to all your repositories)

我希望这会对您有所帮助:)

答案 10 :(得分:0)

尝试了所有答案后,即使是我自己的一个答案,当我再次遇到问题时也无法使用,我发现问题与SSH密钥无关,但与GitKraken UI中的给定选项有关(可能是最新版本)写作: 7.3.2

即使已成功添加SSH密钥,尝试使用以下选项进行克隆:文件>克隆存储库>使用URL克隆(使用SSH或HTTPS)将导致此错误:

Clone Failed
C:\path-to-folder Conf‌igured SSH key is invalid. Please conf‌irm that it is properly associated with your Git provider.

但是... 可以与以下选项一起使用:文件>克隆存储库> Bitbucket.org>克隆存储库 (在其中选择一个存储库帐户)

Successfully cloned repo 'my_repo'

使用URL克隆选项是否必须正常工作?

好吧...

答案 11 :(得分:0)

我有很多用于多个项目的密钥,在~/.ssh/config和/或~/.gitconfig中,身份已经很好地管理了,不想在另一个地方跟踪/引用它们!

到目前为止,大多数有效答案都需要在~/.ssh/config中有我的键和定义,然后还要在ssh-add -K ~/.ssh/...和/或~/.bash_profile中对~/.profile进行引用/调用两者都不是理想的。

我正要创建一个函数来放入~/.bash_profile和/或~/.profile以遍历~/.ssh/*/...中的所有键和子文件夹,因此至少我不需要记住在此处添加新密钥。

然后我发现this beautiful approach here所需要做的就是在AddKeysToAgent yes中添加一条附加的~/.ssh/config指令,以获取要自动添加到ssh-agent的所有凭据:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/[your-secure-ssh-key-name]

注意::这仍然需要您至少运行一次ssh-add -K ~/.ssh/[your-secure-ssh-key-name]才能将密码存储在钥匙串中。否则,您可以省略UseKeychain yes,并且在使用键时会提示您输入密码。

这将在重新启动后持续存在,并且对于CLI以及GitKraken之类的应用程序而言,只能“神奇地工作”。

当密钥没有密码时,UseKeychain yes指令也可以省略,并且您不需要将此指令应用于所有主机。这是一个带有子域通配符的特定主机的示例,该子域可捕获由同一提供程序托管的多个项目:

Host project1.myrepo.com
 User git
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/myrepo.com/project1
 AddKeysToAgent yes
 UseKeychain no

Host *.myrepo.com
 User git
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/myrepo.com/[your-secure-ssh-key-name]
 AddKeysToAgent yes
 UseKeychain yes

Host git-codecommit.*.amazonaws.com
 User ABC1234DEFGHI1234
 IdentityFile ~/.ssh/[your-secure-ssh-key-name]
 AddKeysToAgent yes

Host *
  AddKeysToAgent no
  UseKeychain no
  IdentityFile ~/.ssh/id_rsa