2009-09-30 16 views
7

Il semble donc que je rencontre de réels problèmes lors de la configuration de msysgit. Je peux connecter via mastic à mon répertoire SSH en utilisantProblèmes avec msysgit

ssh: // user @ host: port

Et je les touches correctes. Je peux aussi le faire en utilisant plink via le

plink -P PORT user @ host -i /path/to/private_key.ppk

Lorsque je tente de lancer (via TortiseGIT) ou via un git bash

ssh clone git: // host @ utilisateur: port/chemin/vers/myapp.git

Je continue juste à obtenir l'erreur

Référentiel Git vide initialisé dans D: /Git/myapp.git
avertissement: Vous semblez avoir cloné un référentiel vide.
fatale: L'extrémité distante a raccroché inopinément

J'ai vérifié bot /Git/setup.ini et TortiseGIT et utilisent tous les deux

C: \ Program Files \ TortoiseSVN \ bin \ TortoisePlink.exe

Est-ce que quelqu'un sait comment je peux résoudre ce problème car il me rend fou!

Répondre

1

Vous devez installer Pageant et y ajouter la clé.

Vérifiez aussi que votre variable d'environnement GIT_SSH est configuré pour utiliser plink

+0

hey merci pour la réponse - oui, j'ai cours d'exécution et la reconstitution historique clé est chargé. la variable d'environnement GIT_SSH (via /Git/setup.ini) est définie sur le chemin comme ci-dessus. –

+0

même quand je lance git push ssh: // utilisateur @ hôte: port/chemin/vers/myapp.git - je reçois juste "fatal: l'extrémité distante se bloque de manière inattendue" –

+0

est-il possible de déboguer dans "GIT"? c'est-à-dire trace ou quelque chose? comment obtenir cela dans la sortie? –

0

Y at-il quoi que ce soit (à savoir au moins un commettras) dans la prise en pension à distance?

git dit: « Avertissement: Vous semblez avoir cloné un dépôt vide »

et quand vous voulez pousser dans la prise en pension à distance vide vous devez utiliser:

git push URL master 
+0

merci pour la réponse. ouais je ne suis pas sûr que ce soit le problème parce que même quand je pousse je reçois toujours l'erreur. comment puis-je "déboguer" git ou plink? avez-vous une idée? –

+0

Ehh ... Vous n'êtes pas sûr que c'est le problème? Je pensais que vous ne pouvez pas pousser dans ce repo? (voir le commentaire pour la réponse de nolim1t) –

+0

Vous pouvez essayer de définir GIT_TRACE = 1 et 'git ls-remote Votre-URL' –

0

Avez-vous essayé la connexion de Git-Bash avec ssh utilisateur @ hôte: port? Est-ce qu'il se connecte directement ou demande un mot de passe? Le port n'est requis que si vous utilisez un port non standard pour ssh sinon il sera par défaut à 22. C'est une chose de Putty mais assurez-vous que vous pouvez vous connecter à partir de git bash car il aura généralement son propre magasin de clés dans un répertoire .ssh hors de votre répertoire utilisateur. Si vous ne pouvez pas obtenir que de travailler de Git-Bash vous devez corriger la clé ou debug où le problème est, essayez de spécifier la clé à l'aide

ssh -i keyfile user @ host: port

Si cela ne ne fonctionne pas ou vous demande un mot de passe sur la machine distante, cela signifie que l'échange de clés ne fonctionne pas correctement.Vous devez donc vérifier que les clés sont configurées correctement en ce qui concerne l'environnement Git-Bash. Assurez-vous en particulier que vous avez exporté la clé RSA et n'utilisez pas simplement la clé ppk avec Git-Bash. Je ne crois pas que cela soit supporté. Je n'utilise pas Tortoise-Git donc je ne peux pas m'en empêcher, mais j'utilise régulièrement Git Bash.

9

est ici un peu d'une liste de vérification:

  1. est-ssh activé sur le serveur que vous essayez de vous connecter?
  2. GIT est-il installé sur le serveur?
  3. Avez-vous une configuration de référentiel Git sur le serveur?
  4. Le référentiel dispose-t-il des autorisations appropriées et le référentiel partagé est-il activé dans la configuration sur le serveur?
  5. Avez-vous les clés ssh au bon endroit pour GIT?

    Suggestions:

1: Comme vous pouvez vous connecter à l'aide du mastic, ressemble à ssh est configuré ok.

2: Utilisez du mastic et connectez-vous au serveur. Tapez git --version Obtenez-vous une réponse raisonnable? Si ce n'est pas le cas, vous devrez l'installer sur le serveur.

3: Essayez de configurer un nouveau référentiel sur le serveur. En supposant son serveur de style aixix, utilisez putty et connectez-vous au serveur et créez un nouveau référentiel en utilisant les commandes suivantes, en supposant que vous avez un répertoire/home/source_code. La ligne d'écho crée simplement un fichier contenant un peu de texte afin que nous puissions commencer par quelque chose.

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" 

Maintenant, nous avons un dépôt avec un fichier t.txt dedans. En règle générale, vous ne devez jamais insérer dans un référentiel contenant des modifications apportées à la copie de travail. Le but d'avoir un référentiel sur le serveur est que les gens puissent y accéder tout le temps. Nous faisons un clone "nu" qui est seulement la base de données git, de cette façon il n'y a aucune possibilité de changements de copie de travail. C'est ce clone "nu" que nous utiliserons comme référentiel git central.

cd /home/source_code 
git clone --bare test_repo/ test_repo.git 

Vous pouvez maintenant vous débarrasser du référentiel temporaire que nous avons configuré.

cd /home/source_code/ 
rm -rf test_repo 

Sur votre ordinateur local essayez le clonage à nouveau

git clone ssh://[email protected]:port/home/source_code/test_repo.git 

4: Permission: Cela ne devrait pas poser un problème avec le clonage, aller chercher ou de tirer, sauf si vous avez sélectionné un emplacement pour le dépôt qui ne marche pas avoir lire l'accès. Si vous obtenez une erreur Autorisation refusée lors de la poussée en arrière puis reportez-vous à Permissions correction

5: Mise en place publique/clé privée pour GIT:

  1. Se connecter au serveur avec du mastic
  2. Définissez les autorisations sur votre ~/Dossier .ssh: chmod 700 .ssh
  3. Définissez des permissions sur votre ~ /.ssh/authorized_keys: chmod 600 authorized_keys
  4. Générez les clés ssh-keygen -t dsa
  5. accepte les noms de fichiers qu'il souhaite utiliser
  6. Ne pas entrer un mot de passe (il suffit d'entrer). Vous voudrez refaire cela avec une phrase de passe plus tard.
  7. ajouter la clé de pub au fichier authorized_keys: cat id_dsa.pub >> .ssh/authorized_keys
  8. modifier/etc/ssh/ssh_config et ajoutez la ligne PubkeyAuthentication yes
  9. redémarrer le démon ssh sudo /etc/init.d/ssh restart
  10. Copie id_dsa et id_dsa.pub du serveur sur votre disque locale drive (utilisez winscp ou sftp ou un autre outil de ce type) c: \ users \ userName \ .ssh (pour Vista, l'emplacement sera un peu différent pour les autres versions de Windows)
  11. Définissez tort git pour pointer sur C: \ Programmes \ Git \ bin \ ssh.exe (pas mastic)

La ligne de commande git et tortoise git doivent être configurées pour fonctionner. Essayez à nouveau de cloner sur votre machine locale.

git clone ssh://[email protected]:port/home/source_code/test_repo.git 

Vous pourriez maintenant vouloir aller et répéter la mise en place des touches avec un mot de passe ....