我刚刚将我的Git工具升级到最新版本(TortoiseGit 1.8.8.0,PuTTy 0.63和Windows 1.9.0的Git Bash),并修复了Git Bash在之后永久挂起的问题git pull
。我遵循了公司内部的指示来克隆新的本地存储库,而安装Gerrit的commit-msg
钩子却失败了。
scp -p -P 29418 [USERNAME]@[HOST]:hooks/commit-msg .git/hooks/
在Git Bash中执行后,出现错误Permission denied (publickey)
。但是,我的SSH密钥和其他组件似乎一切正常,因为我可以git pull
/git push
没有任何问题Git Bash不反对任何有关丢失或不正确身份验证的问题,并继续进行所有需要身份验证的操作。
是什么引起此奇怪的错误(这是我的本地计算机或Gerrit安装引起的)吗?如何解决这个问题呢?而且-最重要(或最奇怪)-怎么可能在安装commit-msg
钩子时身份验证失败,而在推/拉/其他需要身份验证的命令上正常运行?
通过commit-msg
从另一个存储库复制,我设法找到了一个丑陋的解决方法(在所有这些问题开始出现之前已经存在了一段时间,commit-msg
因为出于同样的原因,我也无法在该存储库中安装/覆盖钩子) 。但是我想知道,这是怎么回事,或者我在这种情况下想念什么?
Git有一个指定使用哪个ssh的选项,它使用Plink而不是Bash ssh。当您使用scp时,它将使用Bash ssh。您还可以通过以下方式commit-msg
直接从gerrit服务器下载钩子:https://yourserver/r/tools/hooks/commit-msg
如果您始终使用Gerrit,则建议您将commit-msg钩子复制到C:\Program Files (x86)\Git\share\git-core\templates\hooks
。这样,commit-msg
在.git\hooks
克隆存储库时,挂钩将始终放置在您的文件夹中。当我90%的时间都在Gerrit储存库上工作时,我发现在不需要时可以将其删除,然后在需要时将其添加起来更容易。
否则,您可以生成一个新的ssh密钥并添加它。然后,您有一个用于命令行目的的键,它使用ssh和scp,另一个是用于Pit的Git。
实际上,对于我公司而言,我现在确保新安装始终指定使用SSH,而不是PLink,因为它可以防止出现此类问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句