msysgit麻烦

时间:2009-09-30 12:56:25

标签: git ssh msysgit

所以我似乎有一些设置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

有谁知道如何解决这个问题,因为它让我疯狂!

4 个答案:

答案 0 :(得分:9)

这是一个检查清单:

  1. 您尝试连接的服务器上是否启用了ssh?
  2. GIT是否已安装在服务器上?
  3. 您是否在服务器上设置了Git存储库?
  4. 存储库是否具有正确的权限并且在服务器的配置中启用了sharedrepository?
  5. 您是否在适合GIT的地方使用了ssh键?

    <强>建议:

  6. 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设置公钥/私钥:

    1. 使用putty连接到服务器
    2. 设置〜/ .ssh文件夹的权限:chmod 700 .ssh
    3. 设置〜/ .ssh / authorized_keys的权限:chmod 600 authorized_keys
    4. 生成密钥ssh-keygen -t dsa
    5. 接受要使用的文件名
    6. 不要输入密码(只需输入)。您将希望稍后使用密码重做。
    7. 将pub密钥添加到authorized_keys文件:cat id_dsa.pub >> .ssh/authorized_keys
    8. 编辑/ etc / ssh / ssh_config并添加行PubkeyAuthentication yes
    9. 重新启动ssh守护程序sudo /etc/init.d/ssh restart
    10. id_dsaid_dsa.pub从服务器复制到本地硬盘(使用winscp或sftp或某些此类工具)c:\ users \ userName \ .ssh目录(这是针对vista的位置对于其他版本的Windows会有点不同)
    11. 设置togise git指向C:\ Program Files \ Git \ bin \ ssh.exe(不是putty)
    12. 命令行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。