Wie kann ich Git für Projektvorlagen verwenden?

Lesezeit: 5 Minuten

Ich habe einen Vorlagen-/Startpunktcode, den ich projektübergreifend wiederverwende. Während ich an dem neuen Projekt arbeite, möchte ich immer Dinge in der Vorlage hinzufügen und ändern. Entwickeln Sie die Vorlage neben dem Projekt, denke ich.

Einige meiner Ergänzungen sind projektspezifisch und sollten nicht in die Vorlage übernommen werden. Andere sollten.

Ich wette, ich könnte Git dafür verwenden, aber ich bin mir nicht sicher, wie. Ich habe ein Git-Repository für die Vorlage und eines für jedes Projekt. Ich möchte, dass einige, aber nicht alle Commits, die ich mache, zurück in die Vorlage gepusht werden. Kann ich eine Teilmenge von Dateien erstellen, die nicht zurückgeschrieben werden? Soll ich projektspezifische Dinge in einem Branch und die Vorlage im Master bearbeiten?

Ich schätze wirklich jeden Einblick. Mein google-fu ergibt wenig.

  • Einen zentralen Template-Branch nach Bedarf verzweigen und zusammenführen?

    – Kzqai

    7. April 2011 um 1:40 Uhr

  • mögliches Duplikat von Wie kann ich mehrere Projekte in Git nachverfolgen, die gemeinsamen Code verwenden?

    – Chris Johnsen

    7. April 2011 um 10:13 Uhr

  • Auf GitHub gibt es seit Juni 2019 jetzt Repository-Vorlagen: Siehe „Kann ich aus einem bestehenden Repository ein neues Repository erstellen, es aber umbenennen?“.

    – VonC

    6. Juni 2019 um 20:33 Uhr

Ich würde empfehlen, einen Zweig speziell für alle Vorlagenänderungen zu erstellen, die Sie vornehmen möchten. Stellen Sie jedoch sicher, dass Sie es von einem der früheren Commits starten, damit Sie keine projektspezifischen Änderungen an Ihrer Vorlage erhalten. Etwas wie git checkout -b template_changes EARLY_COMMIT_SHA. Dann können Sie alle Vorlagenänderungen, die Sie bereits vorgenommen haben, auswählen: git cherry-pick TEMPLATE_CHANGE_SHA.

Alle zukünftigen Änderungen an der Vorlage, die Sie vornehmen möchten, können im Vorlagenzweig vorgenommen und mit anderen Zweigen des Projekts zusammengeführt werden. Wenn Sie jedoch weit genug fortgeschritten sind, möchten Sie vielleicht zum Vorlagenprojekt wechseln.

Um Ihre Vorlagenänderungen aus dem Projekt in das Vorlagen-Git-Repository zu verschieben, könnten Sie dies tun git format-patch SHA_FROM_WHERE_TEMPLATE_BEGAN. Dadurch wird eine Reihe von Patch-Dateien erstellt, die Sie in das Vorlagen-Repository kopieren und ausführen müssen git apply 0001-... 0002-... um die Patches anzuwenden, aber das macht nicht viel Spaß.

Eine weitere Git-Fu-Sache wäre, das Vorlagen-Repo im Projekt-Repo hinzuzufügen git remote add template /path/to/template/repo. Möglicherweise müssen Sie mit dem spielen -t oder -m Optionen oder den Befehl git remote set-head template template_branch:master (oder so), wenn der Template-Zweig existiert. Dann sollten Sie in der Lage sein, Ihre Änderungen mit Push in das Vorlagenrepo zu übertragen git push template template_branch. Wenn die Eigenschaft head von template_branch nicht gesetzt ist, müssen Sie dies möglicherweise tun git push template template_branch:master.

Hoffe das klappt bei dir. Und Spaß haben!

  • Vielen Dank. Ich denke, das weist mich in die richtige Richtung für weitere Recherchen.

    – Joel

    7. April 2011 um 19:18 Uhr

Ich habe mir die gleiche Frage gestellt. Ich arbeite hauptsächlich mit Django- und Flask-Projekten, was endlose Variationen mit sich bringt (Flask/MongoDB/Vues.js usw.). Ich arbeite auch gerne mit Docker. Daher habe ich die wichtigsten Variationen, die ich normalerweise verwende, als Docker-Projekte erstellt. Aber besonders bei Django gibt es ein paar Dinge, die Sie sowieso fast immer tun (startproject/startapp/collectstatic ausführen).

Ich verwende diese Antwort im Wesentlichen, um unterschiedliche Upstreams für verschiedene Zweige desselben Repos zu haben.

Um ein neues Projekt zu starten, was ich gerne mache:

  1. [create new directory locally]
  2. [create empty project repo on github]
  3. git clone [template repo url]
  4. git checkout -b work
  5. git remote add project [project repo url]
  6. git push project work
  7. git branch -u project/work work

Im Wesentlichen klone ich also mein Vorlagenrepo in mein neues Verzeichnis. Das gibt mir einen Branch-Master, der mein Template-Repo verfolgt (3). Dann erstelle ich sofort einen Arbeitszweig (den ich tatsächlich für das Projekt verwenden werde) (4). Ich füge eine neue Fernbedienung hinzu (die das Repo meines leeren Projekts auf GitHub ist) (5). Und das ist der Schlüssel – ich push project workwodurch ein erster Zweig auf dem neuen (vorher leeren) Projekt-Repository erstellt wird.

Um dies dauerhaft zu machen, habe ich die Zweigarbeit schließlich so eingestellt, dass sie die Zweigarbeit im Repo meines Projekts verfolgt.(6)

Der Branch-Master verfolgt bereits den Branch-Master im Template-Repository, sodass Sie dort nichts zu tun haben.

Wenn ich dann am Branch arbeite und entscheide, dass ich mein Template aktualisieren möchte, kann ich einfach alles, was ich tue, committen, den Branch zum Master wechseln, die Änderung vornehmen und Push auf mein Template übertragen. Es wird auf origin/master drücken. Oder ich warte und häufe ein paar kleinere Änderungen an meinen Vorlagen an, teste sie aus und aktualisiere dann nur die Vorlage.

Wenn ich weit genug in das Projekt eingetaucht bin (und daher wahrscheinlich keine weiteren Vorlagenänderungen vornehmen werde), kann ich einfach die Nachverfolgung von Ursprung/Master beenden und das Projekt neu konfigurieren, um einen Master-Zweig zu haben, oder einfach als mein Master weiterarbeiten.

  • Ich bin mir ziemlich sicher, dass Sie die Schritte 6 und 7 dadurch zusammenführen könnten git push -u project work.

    – Solarshado

    23. Februar um 20:11 Uhr

Benutzer-Avatar
Felipe Rodríguez Herrera

Wenn Sie Garn oder npm verwenden, können Sie ein Vorlagen-Repository mit seinem eigenen Commit-Verlauf haben und es später für ein neues Projekt forken, und mit einem (kniffligen) Befehl wird der Commit-Verlauf im neuen gegabelten Projekt zurückgesetzt.

Ich benutze Garn Gitinit

Paket.json:

    "scripts": {
      "gitinit": "git checkout --orphan tmp-master && git add -A && git commit -m 'inicial' && git branch -D master && git branch -m master && git push -f origin master "
    }

Wenn Sie kein npm oder Garn verwendenkann eine benutzerdefinierte Skriptdatei in der Vorlage die gleiche Arbeit leisten

1175510cookie-checkWie kann ich Git für Projektvorlagen verwenden?

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

Privacy policy