2 Stimmen

Kann nicht in ein dateibasiertes Repository drücken

Ich erhalte die Meldung "Das entfernte Ende hat unerwartet aufgelegt", wenn ich versuche, in ein dateibasiertes Repository zu pushen.

Schritte zur Reproduktion:

git init --bare hello.git  
git clone hello.git  
cd hello  
cat>temp.txt  
Hallo Welt  
Strg+z  
git add .  
git commit  
git push  

Dies tritt unter Windows 7 mit Git 1.9.2.msysgit.0 auf
Wie kann ich in ein dateibasiertes Repository pushen?

Die Konfigurationsdatei in hello.git:

[core]  
repositoryformatversion = 0  
filemode = false  
bare = true  
symlinks = false  
ignorecase = true  
hideDotFiles = dotGitOnly

2voto

Sven Punkte 65923

Ich sehe nicht, dass du vor dem Klonen irgendwo anders im Verzeichnisbaum warst.

Es macht keinen Sinn, ein Bare-Repository direkt innerhalb des Klon eines Bare-Repositorys zu haben. Bewege dich irgendwo anders im Verzeichnisbaum und versuche es erneut zu klonen.

File-basierte Klone sind nicht anders als jeder andere Kommunikationskanal, daher funktioniert der Push im Allgemeinen. Aber es funktioniert nicht mit einem Repository obenauf dem anderen.

Vielleicht möchten Sie nur ein lokales Git-Repository haben. Dies ist einfach gemacht:

git init
... Dateien hinzufügen
git add .
git commit -m "Erster Commit"
...fertig

Sie würden nur pushen, wenn Sie ein zweites Repository haben, aber Sie benötigen kein Bare-Repository für Ihre Arbeit, sondern nur als gemeinsames Ziel, um Commits auszutauschen (wenn Sie kein Github/Bitbucket-Konto haben, mit dem Sie arbeiten können). Ein Bare-Repository hat keine Arbeitskopie, d.h. Sie können keinen Branch oder Commit auschecken und die Dateien sehen, die sich in diesem Commit befinden. Sie würden nur die internen Datenstrukturen von Git sehen können

0voto

Suneel Punkte 817

Ich konnte endlich mit folgendem Befehl pushen:

git push origin master  

Die Fehlermeldung von Git war für mich nicht deutlich genug. Ich denke, da ich ein Bare-Repo geklont habe, konnte Git keinen übereinstimmenden oder gemeinsamen Branch zwischen dem Klon und dem Bare-Repo finden. Also musste ich Git explizit sagen.

0voto

Der Grund dafür ist, dass Ihr Bare-Repository leer war, als Sie es geklont haben. git hätte Sie darauf hinweisen sollen, als Sie git clone ausgegeben haben. Als Sie anschließend in das neue Repository committet haben, haben Sie einen Zweig master im Klon erstellt, der im Bare-Repository nicht existierte. Folglich konnte git bei dem Versuch, diesen Commit in das Upstream-Repository zu pushen, keinen entsprechenden Zweig finden und hat abgebrochen.

Zugegebenermaßen ist die Fehlermeldung etwas irreführend und alles andere als hilfreich...

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