无法从 xcode 7 推送到 gitlab

Cannot push to gitlab from xcode 7

升级到 Xcode 7 的一个不愉快的副作用是我无法再推送到我的 Gitlab 存储库。在过去的两年里,我一直在毫无问题地推动和拉动我的项目,所以我怀疑 Xcode 7 正在做一些不同的事情。我已经通过 Web 界面登录和注销验证了我的 u/p for Gitlab。当我转到 Xcode > Preferences > Accounts,select gitlab 项目时,我看到用户名和密码在那里(就像它们已经存在 2 年一样)并且我验证它们是正确的.

值得注意的是,我可以从终端成功 post,但是,我不希望定期使用终端将我的代码推送到 Gitlab。升级后有没有其他人遇到过这个问题?关于修复有什么建议吗?

我收到的具体错误是 "Authentication failed because the user name or password was incorrect."此错误出现在“帐户”对话框中,以及在尝试推送到 gitlab 存储库后出现。

所以这个问题很棘手,老实说,我不确定这个错误的根本原因是什么,但我的解决方法是这样的:

  1. 从 GitLab 中删除了我的旧 ssh 密钥
  2. 在命令行上创建了一个新的 ssh 密钥,然后将其添加到 GitLab
  3. 从 Xcode > 首选项 > 帐户中删除了 GitLab 存储库
  4. 重新添加 GitLab 帐户,使用 SSH 密钥选项(以前也是,这不是新的)
  5. 关闭Xcode
  6. 吹走项目的工作目录
  7. 打开 Xcode,然后选择源代码管理 > 签出
  8. 提供了 SSH 地址(您可以从项目文件夹中的 GitLab 获取)
  9. 为了测试 Push
  10. 的能力,对项目做了一个小改动
  11. 通过 Xcode 源代码管理 > 推送
  12. 推送到 GitLab

瞧!工作了。这绝对是核选项,但它让我再次工作。我坚信将 Xcode 升级到 7 搞砸了。如果其他人有这个问题,我希望这能解决它!

我发现 Xcode 7 不再喜欢 URL 中的倾斜“~”。请 运行 "git config --list" 并检查 URL。例如,我的遥控器 URL 看起来像这样:

ssh://nobody@nowhere.com/~/product1.git

Xcode 可以在我 运行 以下命令后正常推送:

git remote set-url origin ssh://nobody@nowhere.com/home/nobody/product1.git

git config branch.master.remote ssh://nobody@nowhere.com/home/nobody/product1.git

我的问题是 Xcode 尝试使用错误的密钥文件:.ssh/id_rsa 而不是 .ssh/id_dsa

与 xcode 7.

相同的问题

我设法通过重新生成 RSA 密钥并在 Gitlab 中更新它们来解决这个问题。

编辑:不幸的是这只工作了 1 次

Edit2:在更改 SSH 密钥后工作了一次 "right out of the box",第二次我得到了登录凭据的问题,您可以在 username/password 和 SSH 密钥之间进行选择的对话框。选择 SSH 密钥然后工作。之后对话框就没有再出现了。

所以,总结一下:

  1. XCode 推送到 Gitlab 不工作(要求登录凭据,SSH 密钥不工作)
  2. 重新生成 SSH RSA 密钥并将其添加到 Gitlab(我删除了旧的)
  3. 然后推送在没有对话框的情况下工作
  4. 下次 xcode 要求使用 username/password 个 SSH 密钥登录
  5. 选择 SSH 密钥有效
  6. 此后登录对话框不再出现

我的问题是 id_rsa 是一个符号 link。

我的 .ssh/id_rsa 文件是另一个文件的符号 link。在 xcode 中,我指定了这个符号 link 作为我的 ssh 私钥文件。

在此配置中,git 拉动正常但 git 推动失败。

然后,在 xcode 中,我将 ssh 私钥文件更改为指向常规文件(符号 link 指向的文件)。瞧,推和拉现在都起作用了。

Xcode 版本 8.1 (8B62)