Tim Davis のガイドと Steve のフォローアップに従った後、私がしたことは次のとおりです。
サーバーPC
- CopSSH、msysgit をインストールします。
- CopSSH ユーザーを作成するときは、パスワード認証をオフにし、公開キー認証をオンにして、公開/秘密キーが機能するようにします。
- PuTTygen を使用して公開/秘密鍵を作成します。両方の鍵をユーザーの CopSSH/home/user/.ssh ディレクトリに置きます。
ユーザーの CopSSH/home/user/.bashrc ファイルに以下を追加します。
GITPATH='/cygdrive/c/Program Files (x86)/Git/bin'
GITCOREPATH='/cygdrive/c/Program Files (x86)/Git/libexec/git-core'
PATH=${GITPATH}:${GITCOREPATH}:${PATH}
Git Bash を開き、PC 上の任意の場所にリポジトリを作成します。
$ git --bare init repo.git
Initialized empty Git repository in C:/repopath/repo.git/
クライアントPC
- msysgit をインストールします。
- サーバー上で作成した秘密鍵を使用して、ssh://user@server:port/repopath/repo.gitからレポを複製します(何らかの理由で、ルートは C: ドライブです)
これにより、クローンを作成してコミットすることはできましたが、サーバー上の裸のリポジトリにプッシュすることはできませんでした。私は得続けました:
git: '/repopath/repo.git' is not a git command. See 'git --help'.
fatal: The remote end hung up unexpectedly
これにより、クライアント PC の %USERPROFILE%パス (C:\Users\UserName)の.gitconfig に次の行を作成または追加するというRui のトレースと解決策にたどり着きました。
[remote "origin"]
receivepack = git receive-pack
なぜこれが必要なのかわかりません...誰かが洞察を提供できれば、これは役に立ちます。
私のgitバージョンは1.7.3.1.msysgit.0です