git push origin master: «D:/Projects/TheProject» не является командой git

У меня есть две машины, на которых работает cygwin ssh с msysgit. Я клонировал репозиторий git со своего рабочего стола на свой ноутбук, как описано в 'X' не является репозиторием git (я уверен, что путь правильный). Это оставляет меня с .git/config следующим образом:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = GitServer:D:/Projects/TheProject
[branch "master"]
    remote = origin
    merge = refs/heads/master

Клон работал отлично. git pull origin отлично работает. Но если я попытаюсь выполнить "git push origin master", я получу следующую ошибку:

$ git push origin master
MyUser@TheDesktop's password:
git: 'D:/Projects/TheProject' is not a git command. See 'git --help'.
fatal: The remote end hung up unexpectedly

Любые идеи об исправлении для этого?


person Jake Stevenson    schedule 26.04.2011    source источник
comment
Почему вы используете msysgit от Cygwin? У Cygwin есть собственный пакет git, который работает с путями Cygwin. И наоборот, msysgit должен быть счастливее в MSYS.   -  person ak2    schedule 26.04.2011
comment
У меня было много проблем с git-svn cygwin, который настольный компьютер использует для получения репо с сервера svn моей компании. Я запускаю msysgit внутри cygwin, потому что общая среда более полная.   -  person Jake Stevenson    schedule 26.04.2011


Ответы (5)


http://www.cygwin.com/cygwin-ug-net/using.html#cygdrive не рекомендует использовать синтаксис "D:/" и предлагает использовать вместо него "/cygdrive/d/".

Похоже, что у cygwin нет chsh, но вы можете установить для своей оболочки git-shell вручную в вашем cygwin.bat.

person Community    schedule 26.04.2011
comment
Я должен сделать это, чтобы передать аргумент для msysgit, который не распознает пути cygwin. - person Jake Stevenson; 26.04.2011
comment
Но это не так ... Изменение его по-прежнему дает мне ту же ошибку: «/cygdrive/d/Projects/TheProject» не является командой git. - person Jake Stevenson; 26.04.2011

Вы можете использовать URL-адреса cygwin: используйте /d/Projects/TheProject вместо D:/Projects/TheProject

person Bruce    schedule 26.04.2011
comment
Это было НЕПРАВИЛЬНО, когда я пытался клонировать репо. Изменение его по-прежнему дает мне ту же ошибку: «/cygdrive/d/Projects/TheProject» не является командой git. - person Jake Stevenson; 26.04.2011
comment
Это может быть просто /cyg/d/Projects, попробуйте сначала перейти к нему и проверить. - person ralphtheninja; 26.04.2011
comment
может быть /cyg/d/ , /cygdrive/d/ или напрямую /d/ - person Bruce; 26.04.2011
comment
ssh в /cygdrive/d/Projects работает нормально, но msysgit не распознает эти пути. См. предыдущий вопрос, который я связал здесь. - person Jake Stevenson; 26.04.2011

Принятый ответ на этот вопрос исправлен для меня конкретно это:

git config --global remote.origin.receivepack "git receive-pack"
person Jon M    schedule 29.04.2011

Сначала запустите это на клиенте: git config --global remote.origin.receivepack "git receive-pack"

CD в ​​локальный репозиторий: cd mylocalrepo

Предполагая, что путь на стороне сервера == c:\gitpub\myproj.git, затем вытащить/отправить на сервер git fetch [email protected]:c:/gitpub/myproj.git master git push [email protected]:c:/gitpub/myproj.git master

Конечно, вы можете добавить удаленный ярлык: git remote add myremote [email protected]:c:/gitpub/myproj.git

а затем: git fetch myremote master git push myremote master

Для получения дополнительной информации о настройке сервера cygwin/ssh, вот статья, которую я написал, в которой обсуждается настройка общего репозитория GIT на экземпляре Windows Server, работающем в облаке Amazon EC2:

http://cacheattack.blogspot.com/2012/05/installing-git-server-on-amazon-ec2.html

person cache    schedule 09.05.2012

Я перешел на использование версии git для cygwin, как упоминалось в комментарии ak2. Теперь все работает.

Но я помню, почему я вообще избегал cygwin git... это частые (несколько раз в день) ошибки при использовании git svn. В итоге мне приходится убивать все мои процессы cygwin и запускать «ash rebaseall», чтобы исправить это, или перезагружать машину. Это очень расстраивает.

person Jake Stevenson    schedule 03.05.2011