7

そのため、msysgit のセットアップにいくつかの実際の問題があるようです。を使用して、パテ経由で SSH ディレクトリに接続できます

ssh://ユーザー@ホスト:ポート

そして、私は正しい鍵を持っています。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

4 に答える 4

9

ここにちょっとしたチェックリストがあります:

  1. 接続しようとしているサーバーで ssh が有効になっていますか?
  2. GIT はサーバーにインストールされていますか?
  3. サーバーに Git リポジトリがセットアップされていますか?
  4. リポジトリは正しいパーミッションであり、サーバーの構成で sharedrepository が有効になっていますか?
  5. GIT 用の適切な場所に ssh キーがありますか?

    提案:

1: putty で接続できるので、ssh の設定はOKのようです。

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"

これで、1 つの 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: パーミッション: 読み取りアクセス権のないリポジトリの場所を選択していない限り、クローン作成、フェッチ、またはプルで問題が発生することはありません。プッシュバック時にアクセス許可が拒否されたというエラーが発生した場合は、アクセス許可の修正を参照してください。

5: GIT の公開/秘密鍵の設定:

  1. パテでサーバーに接続する
  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. tortoise git を C:\Program Files\Git\bin\ssh.exe (パテではない) を指すように設定します。

コマンドライン git と tortoise git の両方が機能するようにセットアップする必要があります。ローカル マシンでもう一度クローンを作成してみてください。

git clone ssh://user@host.com:port/home/source_code/test_repo.git

ここで、パスフレーズを使用してキーの設定を繰り返したいと思うかもしれません....

于 2009-10-04T06:28:59.073 に答える
1

Pageant をインストールしてキーを追加する必要があります。

また、GIT_SSH 環境変数が plink を使用するように設定されていることを再確認してください

于 2009-09-30T13:01:42.300 に答える
0

Git-Bashからsshuser@ host:portに接続してみましたか?直接接続しますか、それともパスワードを要求しますか?

ポートは、sshに非標準のポートを使用している場合にのみ必要です。それ以外の場合は、デフォルトで22になります。これはPuttyの1つですが、通常は.sshに独自のキーストアがあるため、gitbashから接続できることを確認してください。ユーザーディレクトリから離れたディレクトリ。Git-Bashからそれを機能させることができない場合は、キーを修正するか、問題のある場所をデバッグする必要があります。を使用してキーを指定してみてください。

ssh -i keyfile user @ host:port

それが機能しないか、リモートマシンでパスワードの入力を求められる場合は、キー交換が正しく機能していないことを意味します。そのため、Git-Bash環境に関してキーが適切に設定されていることを確認する必要があります。特に、RSAキーをエクスポートし、Git-Bashでppkキーを使用しているだけではないことを確認してください。私はそれがサポートされているとは思わない。私はTortoise-Gitを使用していないので、それを手伝うことはできませんが、GitBashを定期的に使用しています。

于 2009-10-02T23:44:37.527 に答える
0

リモートリポジトリに何か (つまり、少なくとも 1 つのコミット) はありますか?

gitは言う:「警告:空のリポジトリを複製したようです」

空のリモートリポジトリにプッシュする場合は、次を使用する必要があります。

git push URL master
于 2009-09-30T14:09:28.343 に答える