Veröffentlichte Niederlassung ersetzen

281
gspr

Angenommen, es gibt ein Upstream-Projekt, das git nicht verwendet, und ich verwalte eine Codebase, die auf den freigegebenen Tarballs dieses Projekts basiert. Ich unterhalte einen Git-Zweig masterund meinen Zweig mydavon. Ich veröffentliche beide Niederlassungen in einem öffentlichen Git-Repository. Wenn Upstream eine neue Hauptversion erstellt, erstelle ich ein neues Commit master, das mit dem freigegebenen Tarball identisch ist. Dann arbeite ich daran, den Leiter von masterin zusammenzuführen my, und veröffentliche beide Zweige.

Nun nehmen wir an, der Upstream kommt endlich zur Besinnung und macht sein Git-Repository öffentlich. Ich möchte meine masterSpur haben und von diesem Punkt der Geschichte an mit den Upstreams identisch sein. Was ist die empfohlene Vorgehensweise? Muss ich einfach einen machen master-2, der mit dem Upstream identisch ist, und myvon da an in das alte verschmelzen master?

0

1 Antwort auf die Frage

1
grawity

In Ihrem lokalen Repository können Sie:

  • Löschen Sie den Zweig mit git branchund erstellen Sie (falls Sie möchten) einen neuen 'Master'-Zweig.
  • Benennen Sie den Zweig mit einem anderen Namen um git branch, und erstellen Sie optional einen neuen Zweig .
  • Richten Sie den 'master'-Zweig direkt auf ein beliebiges Commit, indem Sie git branchoder verwenden git reset.

Für ein Remote-Repository können Sie:

  • Löschen Sie den Zweig (drücken Sie einen Löschvorgang) mit git push --delete.
  • Überschreiben Sie den Zweig mit einem beliebigen Commit, indem Sie verwenden git push --force.

Wenn Sie dies mit einem Remote-Repository tun, das von anderen Personen oder Systemen verwendet wird:

  • Wenn Sie einen anderen Namen verwenden, können andere Personen problemlos git checkoutden neuen Zweig verwenden. Sie bemerken die Änderung jedoch möglicherweise nicht und werden verwirrt, warum der Zweig "Master" plötzlich keine Aktivität mehr hat.
  • Wenn Sie stattdessen eine andere Historie in den gleichen "Master" -Zweig einfügen, wird dies jeder merken - aber je nach gitVersion und Update-Befehl wird entweder eine Fehlermeldung angezeigt (dies erfordert eine manuelle Bereinigung) oder es wird versucht, beides zusammenzuführen Historien (erfordert mehr manuelle Bereinigung).