Standard-Remote für Git-Fetch

Lesezeit: 3 Minuten

Wenn ich in einem lokalen Zweig bin, ist das nicht jede entfernte Filiale verfolgen und ich gebe den Befehl

git fetch

Da ich mehrere Fernbedienungen in definiert habe $GIT_DIR/configvon welcher Fernbedienung erfolgt der Abruf?

Ich habe versucht, das herauszufinden Manpageaber dieser Punkt ist mir unklar.

Zusätzlich: Wie kann ich diese Standard-Fernbedienung ändern, ohne die lokale Verzweigungsverfolgung durchzuführen?

Benutzeravatar von 0xc0de
0xc0de

Wenn Sie über mehrere Remote-Repositorys verfügen und keinen Remote-Repository-Namen angeben, origin wird standardmäßig verwendet. Wenn es kein entferntes Repository mit dem Namen origin gibt, wird ein Fehler ausgegeben

fatal: No remote repository specified.  Please, specify either a URL or a
remote name from which new revisions should be fetched.

Zusätzlich: Wie kann ich diese Standard-Fernbedienung ändern, ohne die lokale Verzweigungsverfolgung durchzuführen?

Sie können diesen Repository-Namen in „Ursprung“ umbenennen, um ihn zum Standard zu machen.

Vorsichtig: Dies funktioniert nicht, wenn für den aktuellen Zweig bereits ein Upstream auf einer anderen Fernbedienung angegeben ist.
Aus git help fetch:

Wenn keine Remote angegeben ist, wird standardmäßig die Ursprungs-Remote verwendet, es sei denn, es ist ein Upstream-Zweig für den aktuellen Zweig konfiguriert.

In diesem Fall können Sie die zu verwendenden Upstream-Zweige ändern origin durch Bearbeiten der remote Felder für Filialen konfiguriert in .git/config.

  • Gibt es keine Alternative dazu, den Namen der Fernbedienung auf Origin zu ändern?

    – Klas Melbourn

    30. Mai 2013 um 15:05 Uhr

  • Es ist ein wenig unflexibel, git davon ausgehen zu lassen, dass „origin“ die Standardfernbedienung ist. Ich benenne meine Remotes immer so um, dass sie aussagekräftiger sind, wie “github”, “internal” usw. Und ja, wenn “origin” remote nicht existiert, schreit git “fatal: No remote repository selected”.

    – Devy

    25. März 2015 um 18:23 Uhr

  • @KlasMellbourn: Sie können die Fernbedienung für Ihre Tracking-Zweige so einstellen, dass sie eine andere Fernbedienung als verwendet originund dann wird diese Fernbedienung standardmäßig verwendet, wenn Sie sie ausführen git fetch mit einer dieser Filialen ausgecheckt.

    – ntc2

    28. Januar 2017 um 3:09 Uhr

In Ihrem Projektordner wird beim Initialisieren von Git im ersten Schritt ein .git-Ordner erstellt.

Suchen Sie in diesem Ordner nach einer Datei namens config, die alle Zweiginformationen enthält. Herkunft wird als Standard verwendet.

  [remote "origin"]
      fetch = +refs/heads/*:refs/remotes/origin/*
      url = [email protected]:project.git

Der Code wird also von der hier aufgeführten URL abgerufen.

Es wird von der Ursprungsfernbedienung abgerufen. Dies ist die erste Fernbedienung, die Sie ausgeführt haben
GIT clone Befehl an.

  • Möglicherweise haben Sie noch nie eine durchgeführt git clone auf dem Repo, aber nachträglich hinzugefügte Remotes (genannt “Ursprung” oder anders).

    – mwfearnley

    1. September 2016 um 9:58 Uhr

Hier sind einige Aliase, die Zeichenfolgen liefern, die programmatisch verwendet werden können:

branch-name = "symbolic-ref --short HEAD"  # https://stackoverflow.com/a/19585361/5353461
branch-remote-fetch = !"branch=$(git branch-name \"$1\") && git config branch.\"$branch\".remote || echo origin #"
branch-remote-push  = !"branch=$(git branch-name \"$1\") && git config branch.\"$branch\".pushRemote || git config remote.pushDefault || git branch-remote-fetch #"
branch-url-fetch = !"remote=$(git branch-remote-fetch \"$1\") && git remote get-url        \"$remote\" #"  # cognizant of insteadOf
branch-url-push  = !"remote=$(git branch-remote-push  \"$1\") && git remote get-url --push \"$remote\" #"  # cognizant of pushInsteadOf

Wenn Sie die Fernbedienung für einen anderen Zweig finden möchten, ersetzen Sie sie branch-name oben mit dem Folgenden, wobei ein einzelnes Argument übergeben werden kann:

branch-current = "symbolic-ref --short HEAD"  # https://stackoverflow.com/a/19585361/5353461
branch-names = !"[ -z \"$1\" ] && git branch-current 2>/dev/null || git branch --format="%(refname:short)" --contains \"${1:-HEAD}\" #"  # https://stackoverflow.com/a/19585361/5353461
branch-name = !"br=$(git branch-names \"$1\") && case \"$br\" in *$'\\n'*) printf \"Multiple branches:\\n%s\" \"$br\">&2; exit 1;; esac; echo \"$br\" #"

1429670cookie-checkStandard-Remote für Git-Fetch

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy