Bitbucket + XCode 4.2 + Git

18
我一直在寻找Bitbucket和XCode的解决方案。众所周知,XCode 4.2带有git支持。我创建了一个Bitbucket账户,并想将更改推送到我的存储库。我按照这个教程https://confluence.atlassian.com/display/BITBUCKET/Use+the+SSH+protocol+with+Bitbucket进行操作。但是,我遇到了问题。当我在XCode的组织者-存储库部分时,我进入我的远程文件夹并创建一个存储库。ssh:// git @ bitbucket.org / username / myrepo.git。然而,当我被要求提供名称和密码时,我提供的用户名和密码都失败了。我也尝试使用git作为用户,但没有成功。更新:我创建了一个~ / .ssh / config文件,在其中添加了一个特定的配置用于Bitbucket。
Host bitbucket.org
HostName bitbucket.org
IdentityFile ~/.ssh/bitbucket
User username

我已经使用ssh -T git@bitbucket.org进行了测试,它可以正常工作并得到验证。
然而,当我使用XCode进行测试时,出现了以下错误:“身份验证失败,因为名称或密码不正确。”
我知道我在这里漏掉了一些东西。
更新2:
我已经成功解决了问题,但只能从命令行中解决,无法从XCode中解决。
稍后我会发布我的解决方案,但如果您有一种从XCode中解决的方法,请随意分享。
谢谢。
10个回答

17

对我来说,使用HTTPS URI是可行的,但我需要从中删除我的用户名。例如,将:

https://username@bitbucket.org/username/myrepo.git

更改为

https://bitbucket.org/username/myrepo.git

然后在提示时提供您的用户名和密码。


1
默认情况下,我的是 ssh://git@bitbucket....,我不得不将其更改为 https://bitbucket...。感谢您的帮助。 - muz the axe

14

这对我也起作用了,但我想知道它是否安全。我怀疑Xcode现在以明文形式存储我的密码。 - icant
2
我给 Mac 设置了密码保护 :) - Gil Margolin

4

当我使用https URL并在提示时输入我的bitbucket用户名和密码时,我能够使用XCode UI。


3

iOS 9.2、Xcode 7.2、启用ARC

每次开始新的Xcode项目时,似乎都需要回到这篇文章和类似的文章来组合解决方案,以便为新项目设置*.git仓库。我的目标是更新并编译完整的解决方案。感谢所有原始贡献者,特别是“trolley”。

如需非常详细的说明,请参阅此链接:http://www.appcoda.com/git-source-control-in-xcode/

1. 像往常一样创建新的Xcode项目,但确保启用源代码控制,如下所示:

如果您没有这样做,那么请在创建项目后前往此处查看如何进行操作:https://dev59.com/kHTYa4cB1Zd3GeqPyb8t#17790306

Enable source control when creating your project.

2. 从顶部工具栏选择源代码控制 ->“当前分支” -> 配置“您的项目名称”,如下所示:

Configure the source control

3. 从配置菜单选项中选择远程选项,点击"+"符号并选择"添加远程",如下所示:

Add remote source

4. 您将被提示输入仓库名称和仓库地址,如下所示:

在这里,您将使用此处提供的指令“trolley”:https://dev59.com/c2sz5IYBdhLWcg3wDz0A#9271409

https://bitbucket.org/username/myrepo.git

在上面的例子中,“myrepo”是位于bitbucket.org上的代码仓库的名称;但是在本地,您可以分配任何名称,其中默认名称为“origin”,如下图所示。

Enter a repository name and address

5. 输入您用于访问bitbucket.org帐户的用户名和密码,如下所示:

您的用户名很可能是您注册时使用的电子邮件地址。

Credentials for the repository

6. 点击“确定”后,如果凭据被接受,则应该会收到绿色的勾号消息。 就这样!

此后,您可以将本地*.git推送到名为“origin”(默认)的bitbucket.org存储库中。

Push local *.git repository to origin

成功将代码推送到bitbucket.org存储库后,将出现带有绿色勾号的类似文本。
注意:请确保在项目中提交初始更改,以便正确创建本地*.git。
希望这能对某些人有所帮助。干杯!

在第4步中,您甚至可以通过提供SSH URL(git@bitbucket.org:username/myrepo.git)与SSH协议同步。如果启用了双重验证,则这非常有用。 - Franklin Yu
@drew.. 谢谢,希望这节省了你一些时间。 - serge-k

2

以下是完整的回答尝试...

使用 ssh-keygen 创建一个 Bitbucket 密钥,如果你还没有创建。选择一个合适的名称,比如假设你创建了一个 rsa 密钥,可以取名为 bitbucket_rsa。将其放在 ~/.ssh/ 目录下。

一旦创建完成,添加:

Host bitbucket.org  
HostName bitbucket.org  
IdentityFile ~/.ssh/<bitbucket key filename above>

将此密钥添加到您的~/.ssh/config文件中。

接下来,使用“管理帐户 > SSH密钥”工具将此密钥添加到Bitbucket网页界面。要将公钥复制到剪贴板,请使用以下命令:

$ pbcopy < ~/.ssh/<bitbucket key filename above>.pub

最后,请确保您使用的是Bitbucket提供的ssh地址,而不是https地址。它们看起来像:

git@bitbucket.org:accountname/repositoryname.git

HTTPS选项卡(目前在右侧边栏)下可访问。

Xcode(包括Xcode 5)现在应该可以正常工作,命令行中的git也将如此。


1

您可以在XCode中解决此问题,而无需转到命令行。您在问题中已经做得很好,但是您设置了错误的URL。

应该是:git@bitbucket.org:username/myrepo.git

而不是您所拥有的:ssh://git@bitbucket.org/username/myrepo.git


如果启用了双重验证,SSH非常有用。 - Franklin Yu

0

我知道已经有几个答案了,但是我花了一个小时才弄明白,所以也许我能帮助到其他人。

我的解决方案很简单,只需将我的用户名添加到 https://bitbucket.org/USERNAME/PROJECT_NAME/admin/access 作为管理员,然后我就可以像平常一样在 Xcode 中输入 URL https://USERNAME@bitbucket.org/USERNAME/PROJECT_NAME.git ,并输入我的用户名和密码。

重要提示:USERNAME 是指托管项目的用户,因此如果您正在处理同事的存储库,则这将是他的用户名。

希望这可以帮助到您。


0

我成功地让XCode接受并使用了我之前在Bitbucket上设置的SSH密钥,方法是在XCode用户界面中指定git作为用户名,并输入我的密码,我的Bitbucket用户名放在仓库的URL中。

在它开始工作之前,我不得不尝试几次。


0

您需要将生成的SSH密钥添加到您的账户中。

我使用GitHub,但BitBucket基本上是其克隆版本,因此相同的操作适用:

cat ~/.ssh/id_rsa.pub | pbcopy

现在尝试重新连接。


谢谢Blender,但我已经将密钥粘贴到了bitbucket。然而,我注意到我有多个ssh密钥,因此我更新了我的问题。 - raul782
1
只是一个小建议,在这里不要使用cat。 pbcopy < ~/.ssh/id_rsa.pub - Frizi

0

好的,看起来我无法通过XCode客户端完成。

然而,命令行是我唯一成功推送更改的方式,而XCode只帮我设置了远程存储库并添加了凭据。

最后,我所需要做的就是:

$git push myrepo master

然后我收到了一个成功的消息:

Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 360 bytes, done.
Total 4 (delta 3), reused 0 (delta 0)
remote: bb/acl: username is allowed. accepted payload.
To ssh://git@bitbucket.org/username/myrepo.git
 123abcd..5a12a67  master -> master

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接