Git - Ziehen Sie von einem entfernten Repo, drücken Sie zum anderen: kann ich Namen von Fernbedienungen schieben?

9

Ich möchte Git mit mehreren Remote-Repos verwenden. Ich habe meinen zentralen Git-Server (aka origin ), sowie meine lokale Dev-Maschine. Was ich versuche, ist, den neuesten Linux-Kernel aus dem git repo von kernel.org herunterzuziehen. Ich werde dann ein paar Änderungen vornehmen und dann den ganzen modifizierten Repo auf meinen eigenen Git-Server schieben.

Ich habe es geschafft, dies in Ordnung zu tun (indem ich einfach git remote ein paar Mal mache - eine für den Ursprung und einmal für kernel.org). Wenn ich den Ursprung jedoch von Grund auf neu kloniere, kann ich kernel.org nicht als Remote-Programm sehen.

Gibt es eine Möglichkeit, die remote add Befehle zu übertragen? Oder muss ich jedes Mal, wenn ich Änderungen von kernel.org (auf einer neuen Maschine) abrufen möchte, manuell hinzufügen?

Außerdem habe ich bei der Erstellung meiner lokalen Zweigstelle eine Remote-Zweigstelle von kernel.org verfolgt. Da ich kernel.org nicht als Remote auf einem neuen Klon sehen kann, heißt das, dass dieser Zweig kernel.org nicht mehr verfolgt?

    
jtnire 18.08.2012, 16:46
quelle

4 Antworten

2

Wenn Sie jedesmal klonen, verlieren Sie das, was Sie in der Konfiguration dieses Repos haben. Dazu gehören reflog , stash , remotes und rerere cache , um nur einige zu nennen. Tu das nicht. Schieben und Ziehen bewegt diese Artefakte nicht. Alles, was man vom Schieben und Ziehen bekommt, sind Referenzen und die Objekte, die benötigt werden, um das zu befriedigen. Remote-Einstellungen werden nicht weitergegeben. Clone ist ein einmaliger Repo-Vorgang. Sie können Clone überhaupt nicht verwenden. Sie können einen leeren Repo-Vorgang mit git init durchführen und dann den Remote manuell mit git remote add und dann git fetch hinzufügen.

    
Adam Dymitruk 18.08.2012 18:05
quelle
2
%Vor%

verschiebt alle lokalen Referenzen zum Ursprung.

    
senior_citizen 20.08.2012 13:54
quelle
0

Wie ich in den anderen Antworten gesagt habe, kann ich das in Git nicht wirklich machen (Freigabe von Fernbedienungen). Ich beabsichtige also, die Notwendigkeit von Fernbedienungen von Drittanbietern auf den Entwicklungsmaschinen zu vermeiden. Ich werde einen lokalen Zweig erstellen, der identisch mit dem Remote-Zweig kernel.org ist. Ich werde dann diesen lokalen Zweig zu meinem Git-Server (Ursprung) schieben. Ich werde dann ein Cron-Skript erstellen, das:

  • Klonen Sie den Zweig, den ich oben erstellt habe.
  • Fügen Sie eine Fernbedienung für kernel.org
  • hinzu
  • Führe einen git pull aus, um den Zweig zu aktualisieren
  • Hinzufügen, Commit und Push

Dies bedeutet, dass ich eine Kopie des kernel.org-Zweigs auf meinem eigenen Git-Server habe, der wie üblich in unserem lokalen Team verfolgt werden kann. Alle Zusammenführungen können dann wie gewohnt fortfahren ...

Was denkst du?

Danke

    
jtnire 20.08.2012 17:12
quelle
0

Es ist nicht möglich, "Fernbedienungen zu teilen". Wie auch immer Sie das versuchen könnten.

  1. Setzen Sie ein Shell-Skript in das Root-Verzeichnis (oder scripts/ ) Ihres Repos. Nennen Sie es zum Beispiel git-bootstrap .

  2. Fügen Sie im Skript die Fernbedienungen wie folgt hinzu:

    #! / usr / bin / env bash

    git remote add upstream git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

    # Beachten Sie, dass Sie das origin remote nicht hinzufügen müssen, wie es beim Klonen eingerichtet ist.

  3. Führen Sie nach dem Klonen auf einem neuen Computer das Skript git-bootstrap aus.

Steven Shaw 10.05.2016 23:58
quelle

Tags und Links