所以我似乎有一些设置msysgit的实际问题。我可以使用
通过putty连接到我的SSH目录ssh:// user @ host:port
我有正确的钥匙。我也可以通过
使用plink来做到这一点plink -P PORT user @ host -i /path/to/private_key.ppk
当我尝试运行(通过TortiseGIT)或通过git bash
git clone ssh:// user @ host:port / path / to / myapp.git
我一直在收到错误
D:/Git/myapp.git中初始化的空Git存储库 警告:您似乎克隆了一个空的存储库 致命:远程端意外挂断
我检查了bot /Git/setup.ini和TortiseGIT,两者都使用
C:\ Program Files \ TortoiseSVN \ bin \ TortoisePlink.exe
有谁知道如何解决这个问题,因为它让我疯狂!
答案 0 :(得分:9)
这是一个检查清单:
您是否在适合GIT的地方使用了ssh键?
<强>建议:强>
1:由于你可以使用putty连接,看起来像ssh设置好了。
2:使用putty并连接到服务器。输入git --version
您是否回复了合理的回复?如果没有,那么您将需要在服务器上安装它。
3:尝试在服务器上设置新的存储库。假设它有一个* nix样式的服务器使用putty并连接到服务器并使用以下命令创建一个新的存储库,假设你有一个目录/ home / source_code。回声线只是生成一个带有一点文字的文件,所以我们有一些东西可以开始。
cd /home/source_code
mkdir test_repo
cd /home/source_code/test_repo
echo "first file" > t.txt
git init
git add .
git commit -m "Initial Import"
所以现在我们有一个存储库,里面有一个t.txt文件。作为一项规则,您永远不应该进入包含工作副本更改的存储库。在服务器上拥有一个存储库的目的是让人们可以随时进入它。我们制作一个“裸”克隆,它只是git数据库,这样就不会有任何工作副本的变化。这是我们将用作中央git存储库的“裸”克隆。
cd /home/source_code
git clone --bare test_repo/ test_repo.git
您现在可以摆脱我们设置的临时存储库。
cd /home/source_code/
rm -rf test_repo
在您的本地计算机上尝试再次克隆
git clone ssh://user@host.com:port/home/source_code/test_repo.git
4:权限:除非您为没有读取权限的存储库选择了一个位置,否则这不会导致克隆,提取或拉取问题。如果在推回时收到Permission denied错误,请参阅Permissions correction
5:为GIT设置公钥/私钥:
chmod 700 .ssh
chmod 600 authorized_keys
ssh-keygen -t dsa
cat id_dsa.pub >> .ssh/authorized_keys
PubkeyAuthentication yes
sudo /etc/init.d/ssh restart
id_dsa
和id_dsa.pub
从服务器复制到本地硬盘(使用winscp或sftp或某些此类工具)c:\ users \ userName \ .ssh目录(这是针对vista的位置对于其他版本的Windows会有点不同)命令行git和tortoise git都应该设置为工作。尝试在本地计算机上再次克隆。
git clone ssh://user@host.com:port/home/source_code/test_repo.git
您现在可能想要用密码短语重复设置密钥....
答案 1 :(得分:1)
您需要安装Pageant并将密钥添加到其中。
同时仔细检查您的GIT_SSH环境变量是否已设置为使用plink
答案 2 :(得分:0)
远程仓库中是否有任何(即至少一次提交)?
git说:“警告:您似乎克隆了一个空的存储库”
当你想要推入空的远程仓库时,你必须使用:
git push URL master
答案 3 :(得分:0)
您是否尝试过将Git-Bash与ssh user @ host:port连接?是直接连接还是要求输入密码?
端口仅在你使用ssh的非标准端口时才需要,否则它将默认为22.这是Putty的一件事,但确保你可以从git bash连接,因为它通常有自己的密钥存储区一个.ssh目录离开你的用户目录。如果您无法通过Git-Bash工作,则需要修复密钥或调试问题所在,尝试使用
指定密钥ssh -i keyfile user @ host:port
如果这不起作用或提示您在远程计算机上输入密码,则表示密钥交换无法正常工作。因此,您需要检查关键是否正确设置Git-Bash环境。特别要确保您已导出RSA密钥,而不仅仅是使用Git-Bash的ppk密钥。我不相信这是支持的。我不使用Tortoise-Git,所以我无法帮助,但我会定期使用Git Bash。