2011-11-15 67 views
17

我一直在寻找与Bitbucket和XCode的解决方案。Bitbucket + XCode 4.2 + Git

众所周知,XCode 4.2带有git支持。 我创建了一个帐户到位桶,我想我的变化推到我的仓库,

我已经按照本教程 https://confluence.atlassian.com/display/BITBUCKET/Use+the+SSH+protocol+with+Bitbucket

然而,这是我面临的问题。 当我在XCode中的组织者 - 存储库部分时,我转到我的远程文件夹并创建一个存储库。

SSH://[email protected]/username/myrepo.git

但是当我问名和密码,那些我提供的用户名和密码失败。我也试着用git作为用户,但没有运气。

UPDATE:

我创建,我已新增到位桶的具体配置的的〜/ .ssh/config文件。

Host bitbucket.org 
HostName bitbucket.org 
IdentityFile ~/.ssh/bitbucket 
User username 

我使用ssh -T [email protected] 测试,它的工作原理,它通过认证。

但是,当我用XCode测试这个时,我得到了以下错误。 “验证失败,因为名称或密码不正确。”

我知道我在这里错过了一些东西。

更新2:

我已经设法解决这个问题,但只能通过命令行,而不是在Xcode。 我稍后会后我的解决办法,但觉得免费的,如果你有办法在Xcode

感谢

回答

17

它通过使用HTTPS URI为我工作,但我需要从中删除我的用户名。例如改变:

https://[email protected]/username/myrepo.git

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

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

+0

2天,谢谢。最后我做到了:) – kemdo

+0

我的默认值是ssh:// git @ bitbucket ....我不得不将其更改为https:// bitbucket ...感谢您的帮助 –

0

你有你生成的SSH密钥添加到您的帐户。

我用GitHub上,但到位桶基本上是它的一个克隆,因此过程同样适用:

cat ~/.ssh/id_rsa.pub | pbcopy 

现在尝试重新连接。

+0

感谢Blender,但我已经将密钥粘贴到bitbucket.However,我注意到我有多个SSH密钥,所以我更新了我的问题。 – raul782

+1

只是一个小建议,不要在这里使用猫。 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://[email protected]/username/myrepo.git 
123abcd..5a12a67 master -> master 
4

我能够通过使用HTTPS URL中使用Xcode的UI和提示时输入我的bitbucket用户名和密码。

14

删除用户名对我无效。但我可以通过这样的加入我的密码的URL来解决这一问题:

https://username:[email protected]/username/myrepo.git

+0

这也适用于我,但我想知道它是否安全。我怀疑Xcode现在以纯文本的形式将我的密码存储在某处。 – icant

+2

我的密码保护mac :) –

+0

这对我有效。感谢这个信息。 – 1amtoo1337

1

你可以在XCode中解决这个问题,而不去命令行。您的问题中的所有内容都正确,但您将URL设置错误。

它应该是:[email protected]:用户名/ myrepo.git

而不是你有什么:SSH://[email protected]/username/myrepo.git

+0

如果启用两步验证,SSH很有用。 –

0

我知道已经有几个答案,但我似乎无法让我为我工作,直到一个小时,所以也许我正在帮助那里的人。

我的解决方式是我的用户名添加到https://bitbucket.org/USERNAME/PROJECT_NAME/admin/access 作为管理员这样的话我可以正常地输入到了Xcode作为URL https://[email protected]/USERNAME/PROJECT_NAME.git与我的用户名和密码。

重要提示:USERNAME代表用户主持项目,因此如果您正在处理同事的回购,这将是他的用户名。

希望这会有所帮助。

0

我能够让XCode接受并使用我之前通过指定git作为用户名(在XCode UI中)与Bitbucket建立的SSH密钥,并将我的密码和我的Bitbucket用户名放入URL中的回购。

在它开始工作之前,不得不使用它几次。

2

这是一个完整的答案,企图...

如果你还没有使用ssh-keygen创建到位桶关键。选择一个像样的名称,如bitbucket_rsa,假设您创建了一个rsa密钥。把它放在~/.ssh/

一旦被创建,添加:

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

到您的〜/ .ssh/config中。

接下来,使用Manage Account > SSH Keys工具将此密钥添加到Bitbucket Web界面。为了让到剪贴板上使用公共键:

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

最后,请确保您使用的是VS到位桶的HTTPS一个的SSH地址。这些看起来像:

[email protected]:accountname/repositoryname.git 

并且可以通过下拉标记的HTTPS(目前在右侧栏)访问。

Xcode(包括Xcode 5)现在应该可以正常工作,就像命令行中的git一样。

3

的iOS 9.2时,Xcode 7.2,ARC启用

似乎每次我开始一个新的Xcode项目,我不得不爬回到这个职位和其他类似放在一起的解决方案,让我为新项目设置* .git存储库。我的这个答案的目标是更新和编译一个完整的解决方案。感谢所有原创贡献者,特别是“手推车”。

对于一个非常彻底的说明,请参考以下链接:http://www.appcoda.com/git-source-control-in-xcode/

1.创建新的Xcode项目像往常一样,但要确保您启用源代码控制,见下图:

如果你不这样做,然后去这里看看如何做到这一点,一旦该项目已创建:https://stackoverflow.com/a/17790306/4018041

Enable source control when creating your project.

2.从顶部工具栏中选择源控制 - >“当前分支” - >配置“项目名称”,见下图:

Configure the source control

3.从配置菜单选项卡遥控器,点击“+”号,选择“添加远程”,见下图:

Add remote source

4.您将被提示将R输入存储库的名称并输入地址epository,见下图:

在这里,你会用这里提供的说明“小车”:https://stackoverflow.com/a/9271409/4018041

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正确创建。

希望这可以帮助别人。干杯!

+0

您甚至可以通过在步骤4中提供一个SSH URL([email protected]:username/myrepo.git)来与SSH协议同步。如果启用了两步验证,那么这很有用。 –

+0

[Mad Hacker](http://stackoverflow.com/a/14146625)显示了这一点。 –

+0

kudos @ serge-k,谢谢你。 –