Git: Welches ist die standardmäßig konfigurierte Fernbedienung für den Zweig?
-
27-10-2019 - |
Frage
Ich habe einen generischen Codaceticetagcode für das Remote-Bare-Repository.Ich arbeite nur im Zweig hub
.
Der letzte Satz dieser Fehlermeldung unten lässt mich fragen: Wie finde ich heraus, welche "standardmäßig konfigurierte Fernbedienung für Ihren aktuellen Zweig" ist?Und wie stelle ich es ein?
[myserver]~/progs $ git remote -v
hub ~/sitehub/progs.git/ (fetch)
hub ~/sitehub/progs.git/ (push)
[myserver]~/progs $ git branch -r
hub/master
[myserver]~/progs $ cat .git/HEAD
ref: refs/heads/master
[myserver]~/progs $ git pull hub
You asked to pull from the remote 'hub', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.
Lösung
Verfolgen Sie den Remote-Zweig
Sie können das Standard-Remote-Repository zum Drücken und Ziehen mithilfe der Track-Option von git-branch angeben.Normalerweise tun Sie dies, indem Sie beim Erstellen Ihres lokalen Hauptzweigs die Option --track angeben. Da diese jedoch bereits vorhanden ist, aktualisieren wir die Konfiguration nur manuell wie folgt:
Bearbeiten Sie Ihren .git/config
[branch "master"]
remote = origin
merge = refs/heads/master
Jetzt können Sie einfach git push und git pull.
[ Quelle ]
Andere Tipps
Sie können dies einfacher tun und sicherstellen, dass Ihr .gitconfig
in einem aussagekräftigen Zustand verbleibt:
Verwenden der Git-Version v1.8.0 und höher
git push -u hub master
beim Drücken oder:
git branch -u hub/master
ODER
(Hiermit wird die Fernbedienung für den aktuell ausgecheckten Zweig auf hub/master
gesetzt.)
git branch --set-upstream-to hub/master
ODER
(Dadurch wird die Fernbedienung für den Zweig mit dem Namen branch_name
auf hub/master
gesetzt.)
git branch branch_name --set-upstream-to hub/master
Wenn Sie v1.7.x
oder früher verwenden
Sie müssen --set-upstream
verwenden:
git branch --set-upstream master hub/master
branch_name
auf hub/master
gesetzt.) git branch branch_name --set-upstream-to hub/master
v1.7.x
oder früher verwenden
Sie müssen --set-upstream
verwenden:
git branch --set-upstream master hub/master
Der Vollständigkeit halber: In den vorherigen Antworten wird angegeben, wie der Upstream-Zweig eingerichtet wird, nicht jedoch, wie er angezeigt wird.
Es gibt verschiedene Möglichkeiten, dies zu tun:
git branch -vv
zeigt diese Informationen für alle Zweige an.(in den meisten Terminals blau formatiert)
cat .git/config
zeigt dies auch.
Als Referenz:
Der Befehl zum Abrufen der effektiven Push-Fernbedienung für den Zweig, z. B. Master, lautet:
git config branch.master.pushRemote ||git config remote.pushDefault ||git config branch.master.remote
Hier ist der Grund (aus der Ausgabe "man git config"):
Branch.name.remote [...] teilt git fetch und git push mit, von welcher Fernbedienung [Push] [...] [für Push] kann mit remote.pushDefault (für alle Zweige) [und] für den aktuellen Zweig [..] überschrieben werden, der von branch.name.pushRemote [weiter überschrieben wird...]
Aus irgendeinem Grund gibt "man git push" nur über branch.name.remote an (obwohl es die niedrigste Priorität der drei hat) + gibt fälschlicherweise an, dass Push-Standardeinstellungen auf origin zurückgehen, wenn dies nicht festgelegt ist - dies ist nicht der FallWenn Sie ein Repo klonen, wird branch.name.remote auf origin gesetzt. Wenn Sie diese Einstellung jedoch entfernen, schlägt git push fehl, obwohl Sie immer noch die Ursprungsfernbedienung haben