2009-08-26 18 views
3

Ich habe ein lokales Git-Repository gestartet. Jetzt, an diesem Punkt, möchte ich es veröffentlichen, sagen wir zu Github, aber ich möchte nicht die ganze Geschichte des Projekts veröffentlichen, nur die neueste Version.Den HEAD einer Verzweigung ohne alle vorherigen Commit-Objekte veröffentlichen

Insbesondere möchte ich einen lokalen "Pub" Zweig erstellen, einige Änderungen daran vornehmen (möglicherweise vertrauliche Informationen verbergen), und die Veröffentlichung der "Pub" Zweigstelle.

Wenn ich tun würde, was ich mit einem einfachen Push gesagt habe, werde ich feststellen, dass alle "Pub" -Historien im Remote-Repository veröffentlicht werden, etwas, das ich nicht möchte, da auch sensible Informationen veröffentlicht werden.

Wie kann dies erreicht werden?

Danke!

Antwort

2

Werfen Sie einen Blick auf this question.

Sie können auch den Ordner .git in Ihrem Quellverzeichnisbaum durch ein anderes ersetzen und Ihren Code überprüfen, wenn Sie veröffentlichen möchten.

Sie können jedoch aufgrund der Funktionsweise von Git keine Verzweigung im selben Git-Repository einrichten, ohne den Verlauf zu teilen. Ein Repository hat einen Root-Commit des Anfangszustands und alle anderen Commits sind einfach Deltas gegen diesen Commit.

Aber wenn wir schon dabei sind, wenn Sie wollen nicht veröffentlichen Versionskontrolle Geschichte aussetzen, warum nicht einfach den Code als Tarball mit einer Versionsnummer, kein Grund Git hinein zu ziehen :)

+0

+1 für die alternative Lösung –

+0

Ich würde sagen, Plüsch auch für die Alternative, außer er scheint zu Github oder dergleichen zu veröffentlichen, die eine Tarball weniger nützlich machen würde. –

+0

Vielen Dank für Ihre Antwort. Ich möchte meinen Code über ein Git-Repository hauptsächlich aus zwei Gründen veröffentlichen: 1 - Ich möchte die Geschichte des veröffentlichten Codes verfolgen. 2 - Es ist schön, dass andere daran mitarbeiten. Nochmals vielen Dank. –

2

Für einen Zweig muss seine gesamte Historie exportiert werden.

Die Lösung besteht meines Erachtens darin, ein neues Git-Repository mit Ihrem neuesten Checkout zu erstellen. Fügen Sie dann dieses Repository als Remote Ihres aktuellen Repositorys hinzu. Arbeiten Sie Ihre eigene Seite, indem Sie die Produktion mit dev synchronisieren und git patch apply oder git rebase -i verwenden, um die Produktion in Produktion zu bringen.

Das wird Ihre private Entwicklungsgeschichte, die Sie nicht von jeder Aufdeckung ausgesetzt sein wollen.

0

Ich denke, ich versuche git zu biegen, Dinge zu tun, ist es nicht annehmen :)

Die einfachste Lösung kam ich mit zu handhaben ist:

1 - Erstellen einer „public-Entwurf“ branch von Meister. 2 - Nehmen Sie alle Änderungen vor, um Ihren Code zu veröffentlichen, d. H. Passwörter und ähnliches zu verbergen. Nachfolgende Zusammenführungen werden diese Änderungen gut behandeln. 3 - Wenn Sie bereit sind, rsync den öffentlichen Entwurf mit dem Master eines anderen Git-Repository das Remote-Repository zu verfolgen. 4 - Übernehmen Sie alle Änderungen und übertragen Sie sie an das Remote-Repository.

Ich frage mich, ob das andere Repository durch eine Verzweigung namens "public" ersetzt werden könnte, die nie aus anderen Zweigen zusammenführt, sondern nur zurück zu den "öffentlichen Entwurf" Zweigen zusammengeführt wird. Dadurch können Änderungen, die von anderen Personen im öffentlichen Repository eingeführt wurden, zusammengeführt werden.

Danke euch allen.

+0

In Bezug auf das Patchen der Öffentlichkeit und das Zusammenführen zu anderen Zweigen, können Sie genau das tun. Es ist in meiner Antwort von gestern. –

Verwandte Themen