9

开始从事一个新项目,我需要为私人和公共项目的混合运行“迦太基更新”,其中一些具有子模块。无论我做什么,迦太基都会挂起,没有任何迹象表明原因。我可以做些什么来确定挂起,然后如何解决这些问题?

4

1 回答 1

11

我为解决我的问题所做的大部分工作都可以在其他地方找到,但没有一个网站拥有这一切。最后,我使用了一种我没有找到但猜测的技术。

我遇到的根本问题是为我的 github 帐户采用推荐的安全保护:两阶段身份验证和 ssh 密码。这两种方法都可以解决,但不幸的是,Cathage 没有提供“详细”选项来让用户确定它正在执行的 git 命令——这个选项在用户挂起时会真正帮助用户。在我的情况下(可能还有大多数其他人),根本问题是 Carthage 运行的 git 命令想要提示用户某些内容,而 Carthage 已经关闭或重定向了标准输出。

1) Sierra 和 Git 帐户/密码

似乎最近的 Sierra 点版本更改了 git 凭据的缓存方式。现在执行此操作的正确方法是使用钥匙串。有关如何指导 git 使用 Keychain 的过程可在此处找到。请注意,此技术仅适用于纯“帐户/密码”身份验证。

在尝试 Carthage 之前,请确保您可以git clone从终端使用以确保一切正常。

2)两步认证

在这种情况下,您需要使用身份验证令牌。该令牌用于代替 git 密码。同样,确保您可以在尝试 Carthage 之前克隆适当的存储库。

3) ssh 访问密码

如果 git 使用 ssh(因为它可能使用子模块),那么 git 将尝试提示输入密码,并且由于 Carthage 禁止您将被挂起。通过在文件中添加一行~/.ssh/config(并在文件的底部执行此操作)

Host *
    UseKeychain yes

git 还将使用钥匙串来保存和检索密码。您需要通过终端执行此操作一次才能将其输入钥匙串。

4)仍然卡住?

如果上述技术对您没有帮助,当 Carthage 挂起时打开一个新的终端窗口并运行ps -aef | grep git;然后你会看到一些 git 命令。希望您会git clone像我一样看到命令;将该命令复制到剪贴板。

终止 Carthage 命令,然后将该行粘贴到终端并运行命令(可能通过编辑它以删除无关选项),看看会发生什么。幸运的是,您发现的内容将帮助您解决问题。

于 2017-03-21T18:10:30.243 回答