开始研究一个新项目,我需要为私人和公共项目组合运行"迦太基更新",其中一些项目有子模块.无论我做什么,迦太基都没有说明原因.我该怎么做才能确定挂起,然后如何解决这些问题呢?
我为解决我的问题所做的大部分工作都可以在其他地方找到,但没有一个网站拥有这一切.最后我使用了一种我没有找到但却猜到的技术.
我遇到的根本问题是为我的github帐户采用了建议的安全保护:两阶段身份验证和ssh的密码短语.这两个都可以解决,但遗憾的是Cathage没有提供"详细"选项让用户确定它正在执行的git命令 - 这个选项可以在用户挂起时真正帮助它.在我的情况下(可能还有其他大多数)根本问题是Carthage运行的git命令想要提示用户输入某些内容,而Carthage已关闭或重定向标准输出.
1)Sierra和Git帐户/密码
似乎最近的Sierra版本更改了缓存git凭据的方式.现在正确的方法是使用Keychain.关于如何指导git使用Keychain的过程可以在这里找到.请注意,此技术仅适用于纯"帐户/密码"身份验证.
在尝试迦太基之前,确保您可以git clone
从终端使用以确保一切顺利.
2)两步认证
在这种情况下,您需要使用身份验证令牌.该令牌用于代替git密码.再次确保您可以在尝试使用Carthage之前克隆适当的存储库.
3)ssh访问的密码短语
如果git使用ssh(就像它可能与子模块一样),那么git将尝试提示密码,并且当Carthage抑制你将被挂起.通过在~/.ssh/config
文件中添加一行(并在文件的BOTTOM处执行此操作)
Host * UseKeychain yes
git还将使用Keychain来保存和检索密码.您需要通过终端执行此操作以将其输入钥匙串.
4)仍然卡住?
如果上述技术对你不起作用,当Carthage挂起时会打开一个新的终端窗口并运行ps -aef | grep git
; 你会看到的是一些git命令.希望你会git clone
像我一样看到命令; 将该命令复制到剪贴板.
杀死Carthage命令,然后在终端中粘贴该行并运行命令(可能通过编辑它来删除多余的选项),看看会发生什么.幸运的是,您发现的内容可以帮助您解决问题.