Ich habe ein Remote-Repository eingerichtet und kann neue Änderungen daran vornehmen, aber ich kann nicht daraus abrufen. Ich erhalte immer die (eher kryptische) Fehlermeldung:
fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository
fatal: The remote end hung up unexpectedly
Was heißt das? Was soll ich tun, um das Abrufen zu aktivieren?
(Beachten Sie, dass dieses Remote-Repo nur als Backup-Repo verwendet wird, daher sollte es so ziemlich eine exakte Kopie meines lokalen Repositorys sein. Ich kann wirklich nicht verstehen, warum ich darauf pushen, aber nicht abrufen kann ...)
Meine Konfiguration sieht aus wie:
[remote "origin"]
url = ssh://blablablah
fetch = +refs/*:refs/*
mirror = true
git remote add name server
mit der--mirror
Option eingerichtet..git/config
. Insbesondere spricht Charles über den[remote …]
Abschnitt, glaube ich.Antworten:
Sie versuchen, den Zweig abzurufen, an dem Sie arbeiten. Das heißt, Sie befinden sich im Hauptzweig und versuchen, ihn zu aktualisieren. Das ist doch nicht möglich. Es ist üblicher, die
remotes/*
Zweige zu aktualisieren und sie dann in Ihre lokalen zu ziehen. Was Sie wollen, ist vielleichtDadurch wird das Repository eingerichtet, in das abgerufen werden soll
remotes/otherrepo/*
.git fetch otherrepo
sollte den Trick machen. Alternativ können Sie Ihre manuell bearbeiten.git/config
undfetch
für die Fernbedienung auf so etwas einstellenrefs/heads/*:refs/remotes/otherrepo/*
.quelle
thehost:/the/path.git
Teil durch Ihre Repository-URL ersetzt werden.Falls jemand dies findet, weil er speziell in den aktuellen Zweig rufen möchte, können Sie das
--update-head-ok
Flag verwenden. Aus den Dokumenten :In einigen Fällen möchten wir unsere eigenen Porzellanbefehle implementieren, z. B. Automatisierung und Werkzeuge.
quelle
-u
Flagge nicht schnell vorgespannte Commits abgelehnt werden:! [rejected] master -> master (non-fast-forward)
git fetch -fu origin master
git reset --hard
Folgendes, damit das Arbeitsverzeichnis mit dem Kopf übereinstimmt (Vorsicht, dies verwirft alle nicht gespeicherten Änderungen).Dies sollte auch funktionieren , wenn Sie in sind Master - Zweig und will spätestens bekommen versuchen , diese
quelle
Ich hatte dieses Problem, als ich ein Repository gedankenlos geklont habe, anstatt es abzurufen, sodass beide Repositorys Master waren. Wenn Sie am Remote-Repository keine Arbeit geleistet haben, können Sie die Probleme mit den grundlegenden git-Befehlen wie folgt beheben: (1) Löschen des Remote-Repositorys, (2) Kopieren des lokalen Repositorys an den Ort, an dem sich das Remote-Repository befand, (3) Löschen des lokale, und dann (4) das lokale Repository mit einrichten
Dann
git pull
undgit push
werde die richtigen Dinge tun. Der Vorteil der Vermeidunggit remote
gemäß Michaels effizienterer und prinzipieller Antwort besteht darin, dass Sie nicht über die Semantik der Nachverfolgung von Zweigen nachdenken müssen.quelle
Ich habe das gleiche Problem. Zuerst versuche ich damit zu holen
Ich hatte das gleiche Problem, das Sie erwähnen. Danach habe ich diesen einfachen Befehl ausprobiert.
Note ruft die Änderungen ab und führt sie zusammen. Wenn Sie das Terminal verwenden, öffnen Sie die Datei und müssen eine Nachricht festschreiben. Mit dieser Nachricht pushen Sie das letzte Commit. Versuchen Sie diesen Befehl und schließlich können Sie die Anfrage pushen.
quelle
Geben Sie tatsächlich Git-Befehle in die Befehlszeile ein oder führen Sie die ausführbare Git-Datei aus Ihrem eigenen Code aus?
Sind Sie sicher, dass Git versucht, in das richtige lokale Verzeichnis zu rufen, wenn Sie es über Code ausführen?
Es gibt zwei Möglichkeiten, dies zu tun:
Verwenden Sie die von Ihrer Programmiersprache bereitgestellten Optionen, um das richtige Arbeitsverzeichnis festzulegen, bevor Sie Git ausführen
( C # -Beispiel , da ich dieses verwende).
Übergeben Sie den
-C
Parameter immer an Git, um das Verzeichnis mit dem lokalen Repo anzugeben.Ich habe ein Projekt, in dem ich die ausführbare Git-Datei aus C # -Code aufrufe, und ich habe die gleiche Fehlermeldung wie in der Frage erhalten, als ich versehentlich vergessen habe, die zu setzen
-C parameter
.quelle
Schwerwiegend: Weigert sich, in die aktuellen Zweigstellenreferenzen / Köpfe / BRANCHNAME des nicht bloßen Repositorys zu rufen
Ich habe einen Zweig branch lokal erstellten dann ausgeführt Befehl „ GIT stromauf Zug- / ID / Kopf fetch: Branchen “ und bekam fatal: Verweigern in Stromzweig refs / heads / branch von nicht-bare Repository zu holen
dann habe ich den zweig gelöscht und wieder das gleiche cmd aufgerufen es geht ganz gut.
Eigentlich habe ich Pull Request Branch ausgecheckt.
quelle