Клон работает, дистанционное нажатие - нет. Удаленный репозиторий поверх копш - PullRequest
10 голосов
/ 29 апреля 2010

У меня есть «setup-a-msysgit-server-with-copssh-on-windows», следуя «1001 * руководству» Тима Дэвиса, и теперь я учился использовать команды git, следуя указаниям Джейсона Мерлинга guide , и мне удалось заставить все работать нормально, но теперь я не могу передать команду push.

Я установил сервер и клиент на одной машине (на данный момент), win7-x64.

Вот некоторая информация о том, как все устроено:

CopSSH Folder     : C:/SSH/
Local Home Folder : C:/Users/rvc/
Remote Home Folder: C:/SSH/home/rvc/          # aka /cygdrive/c/SSH/home/rvc/
git remote rep    : C:/SSH/home/rvc/myapp.git # empty rep

В '/SSH/home/rvc/.bashrc' и 'Users / rvc / .bashrc':

export HOME=/cygdrive/c/SSH/home/rvc
gitpath='/cygdrive/c/Program Files (x86)/Git/bin'    
gitcorepath='/cygdrive/c/Program Files (x86)/Git/libexec/git-core'
PATH=${gitpath}:${gitcorepath}:${PATH}

Итак, клонирование работает (все, что ниже, делается через «Git Bash here»: P):

rvc@RVC-DESKTOP /c/code
$ git clone ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git
Initialized empty Git repository in C:/code/myapp/.git/
warning: You appear to have cloned an empty repository.

rvc@RVC-DESKTOP /c/code
$ cd myapp

rvc@RVC-DESKTOP /c/code/myapp (master)
$ git remote -v
origin  ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git (fetch)
origin  ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git (push)

Затем я создаю файл:

rvc@RVC-DESKTOP /c/code/myapp (master)
$ touch test.file

rvc@RVC-DESKTOP /c/code/myapp (master)
$ ls
test.file

Попробуйте нажать его и получите эту ошибку:

rvc@RVC-DESKTOP /c/code/myapp (master)
$ git add test.file

rvc@RVC-DESKTOP /c/code/myapp (master)
$ GIT_TRACE=1 git push origin master
trace: built-in: git 'push' 'origin' 'master'
trace: run_command: 'C:\Users\rvc\bin\plink.exe' '-batch' '-P' '5858' 'rvc@192.1
68.1.65' 'git-receive-pack '\''/SSH/home/rvc/myapp.git'\'''
git: '/SSH/home/rvc/myapp.git' is not a git command. See 'git --help'.
fatal: The remote end hung up unexpectedly

"git: /SSH/home/rvc/myapp.git" не является командой git. См. "Git --help". " .. что?!

EDIT: RAAAGE !!

У меня снова та же проблема, но теперь с ssh:

rvc@RVC-DESKTOP /c/code/myapp (master)
$ GIT_TRACE=1 git push
trace: built-in: git 'push'
trace: run_command: 'ssh' '-p' '5858' 'rvc@192.168.1.65' 'git-receive-pack '\''/
SSH/home/rvc/myapp.git'\'''
git: '/SSH/home/rvc/myapp.git' is not a git command. See 'git --help'.
fatal: The remote end hung up unexpectedly

Я пробовал нажать GUI и показывает то же сообщение.

git: '/SSH/home/rvc/myapp.git' is not a git command. See 'git --help'.
Pushing to ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git
fatal: The remote end hung up unexpectedly

Вот токи .bashrc:

C: \ Users \ rvc.bashrc (я думаю, что это используется только cygwin / git bash):

export HOME=/c/SSH/home/rvc

gitpath='/c/Program Files (x86)/Git/bin'

gitcorepath='/c/Program Files (x86)/Git/libexec/git-core'
export GIT_EXEC_PATH=${gitcorepath}

PATH=${gitpath}:${gitcorepath}:${PATH}

C: \ SSH \ home \ rvc.bashrc (.. и это используется, когда git подключается через ssh к «удаленному» серверу):

export HOME=/c/SSH/home/rvc

gitpath='/cygdrive/c/Program Files (x86)/Git/bin'

gitcorepath='/cygdrive/c/Program Files (x86)/Git/libexec/git-core'
export GIT_EXEC_PATH=${gitcorepath}

PATH=${gitpath}:${gitcorepath}:${PATH}

РЕДАКТИРОВАТЬ 2: Некоторая дополнительная информация:

rvc@RVC-DESKTOP /c/code/myapp (master)
$ ssh -p 5858 rvc@192.168.1.65 git-receive-pack /SSH/home/rvc/myapp.git
git: '/SSH/home/rvc/myapp.git' is not a git command. See 'git --help'.


РЕДАКТИРОВАТЬ 3:

rvc@RVC-DESKTOP /c/code/myapp (master)
$ git push --receive-pack='git receive-pack' ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git --a
ll
Counting objects: 3, done.
Writing objects: 100% (3/3), 202 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git
 * [new branch]      master -> master

Это сделал трюк ??

git push выполняет 'git-receive-pack', и это должен быть 'git receive-pack'?

Моя версия git 'git version 1.7.0.2.msysgit.0'

Ответы [ 4 ]

11 голосов
/ 30 апреля 2010

глупое исправление (это изменилось /SSH/home/rvc/.gitconfig):

rvc@RVC-DESKTOP /c/code/myapp (master)
$ git config --global remote.origin.receivepack "git receive-pack"

rvc@RVC-DESKTOP /c/code/myapp (master)
$ git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 246 bytes, done.
Total 2 (delta 0), reused 0 (delta 0)
To ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git
   680f32e..2da0df1  master -> master
1 голос
/ 12 января 2011

Спасибо! Я также получаю сообщение об ошибке

git: '/pathToRepo/myRepoName.git' is not a git command See 'git --help'.
fatal: The remote end hung up unexpectedly

У меня сработала команда git config.

git config --global remote.origin.receivepack "git receive-pack"

Я использую MSysGit-1.7.3.1

1 голос
/ 29 апреля 2010

Найден ответ ...

GIT_SSH

If this environment variable is set then git fetch and git push will

используйте эту команду вместо ssh, когда они должны подключиться к удаленному система. Команда $ GIT_SSH будет приведены ровно два аргумента: имя пользователя @ хост (или просто хост) из URL и команда оболочки для выполнения в этой удаленной системе.

To pass options to the program that you want to list in GIT_SSH you

нужно будет обернуть программу и параметры в сценарии оболочки, а затем установить GIT_SSH для ссылки на скрипт оболочки.

Usually it is easier to configure any desired options through your

личный файл .ssh / config. пожалуйста обратитесь к документации по ssh для дальнейшие подробности.

Мне просто нужно было удалить переменную GIT_SSH из переменных среды Windows.

Я установил его, потому что следовал руководству Тима Дэвиса, но без использования TortoiseGit, и руководство говорит, чтобы указать переменную на TortoisePlink (шаг 4.4), поэтому я предположил, что мне нужно было указал на plink.exe: P. О хорошо ... переходя к следующей проблеме ...

1 голос
/ 29 апреля 2010

1) наиболее частая причина этой проблемы - откройте окно Git Bash и введите echo $HOME - убедитесь, что установлено значение /c/SSH/Home/<user>/. Если нет - введите export HOME=/c/SSH/home/<user>

2) попробуйте интерфейс GUI [тот же проб?]

...