10 Stimmen

Klonen funktioniert, Remote-Push nicht. Remote-Repository über Copssh

Ich habe "setup-a-msysgit-server-with-copssh-on-windows" nach Tim Davis' Anleitung erstellt und lerne jetzt, wie man die Git-Befehle verwendet, nach Jason Meridths Anleitung, und es ist mir gelungen, alles zum Laufen zu bringen, aber jetzt kann ich den push-Befehl nicht durchführen.

Ich habe den Server und den Client vorerst auf derselben Maschine eingerichtet, win7-x64.

Hier sind einige Informationen, wie die Dinge eingerichtet sind:

CopSSH-Ordner     : C:/SSH/
Lokaler Home-Ordner : C:/Users/rvc/
Entfernter Home-Ordner: C:/SSH/home/rvc/          # aka /cygdrive/c/SSH/home/rvc/
Git Remote-Repository    : C:/SSH/home/rvc/myapp.git # leeres Repository

In '/SSH/home/rvc/.bashrc' und '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}

Also, das Klonen funktioniert (alles unten wird über "Git Bash here" gemacht :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)

Dann erstelle ich eine Datei:

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

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

Versuche es zu pushen und bekomme diesen Fehler:

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' is not a git command. See 'git --help'." .. was?!

BEARBEITEN: RAAAGE!!

Ich habe wieder das gleiche Problem, jetzt aber mit 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

Ich habe versucht, den GUI-Push, und es zeigt die gleiche Nachricht.

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

Hier ist der aktuelle .bashrc:

C:\Users\rvc.bashrc (Ich denke, dass dies nur von cygwin/git bash verwendet wird):

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 (.. und das wird verwendet, wenn Git über ssh mit dem "Remote"-Server verbunden ist):

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}

BEARBEITEN 2: Einige zusätzliche Informationen:

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'.

BEARBEITEN 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

Hat das funktioniert??

git push führt 'git-receive-pack' aus, und es sollte 'git receive-pack' sein ?

Meine Git-Version ist 'git version 1.7.0.2.msysgit.0'

11voto

Rui Punkte 494

Stupide Lösung (dies hat sich geändert /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
Zähle Objekte: 3, Fertig.
Delta-Komprimierung mit bis zu 4 Threads.
Komprimiere Objekte: 100% (2/2), Fertig.
Schreibe Objekte: 100% (2/2), 246 Bytes, Fertig.
Gesamt 2 (delta 0), wiederverwendet 0 (delta 0)
Zu ssh://rvc@192.168.1.65:5858/SSH/home/rvc/myapp.git
   680f32e..2da0df1  master -> master

1voto

Tim Punkte 11

1) Die häufigste Ursache für dieses Problem - Öffnen Sie ein Git Bash-Fenster und geben Sie echo $HOME ein - stellen Sie sicher, dass es auf /c/SSH/Home// gesetzt ist. Wenn nicht, geben Sie export HOME=/c/SSH/home/ ein.

2) Versuchen Sie die GUI-Schnittstelle [gleiches Problem?]

1voto

Rui Punkte 494

Ich habe die Antwort gefunden...

GIT_SSH

Wenn diese Umgebungsvariable gesetzt ist, werden git fetch und git push stattdessen diesen Befehl verwenden, anstatt ssh zu verwenden, wenn sie sich mit einem entfernten System verbinden müssen. Der Befehl $GIT_SSH wird genau zwei Argumente erhalten: den benutzer@host (oder nur host) aus der URL und den Shell-Befehl, der auf diesem entfernten System ausgeführt werden soll.

Um Optionen an das Programm zu übergeben, das in GIT_SSH aufgeführt werden soll, müssen Sie das Programm und die Optionen in ein Shell-Skript einbetten und dann GIT_SSH auf das Shell-Skript verweisen.

In der Regel ist es einfacher, alle gewünschten Optionen durch Ihre persönliche .ssh/config-Datei zu konfigurieren. Bitte konsultieren Sie Ihre ssh-Dokumentation für weitere Details.

Ich musste einfach die GIT_SSH-Variable aus den Windows-Umgebungsvariablen löschen.

Ich hatte sie gesetzt, weil ich Tim Davis' Anleitung gefolgt bin, aber ohne TortoiseGit zu verwenden, und die Anleitung besagt, dass die Variable auf TortoisePlink zeigen soll (Schritt 4.4), also ging ich davon aus, dass ich auf plink.exe zeigen musste :P. Na ja... weiter zum nächsten Problem...

1voto

timc Punkte 339

Danke! Ich habe den gleichen Fehler auch bekommen

git: '/pathToRepo/myRepoName.git' ist kein git Befehl Siehe 'git --help'.
fatal: Das entfernte Ende hat unerwartet aufgelegt

der git config Befehl hat bei mir funktioniert.

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

Ich verwende MSysGit-1.7.3.1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X