Erstellen Sie einen leeren Zweig auf GitHub


115

Ich möchte einen neuen GitHub-Zweig namens erstellen release.

Dieser Zweig muss leer sein ! Es gibt jedoch einen Zweig mit x Commits, und ich möchte keinen Commit-Verlauf haben.

Die einzige Methode, die ich gefunden habe, ist das Erstellen eines lokalen --orphan Zweigs.



1
Warum willst du das tun? Sie können das leere Set "Fred" nennen, aber es ist immer noch das leere Set.
msw

Wenn Sie uns mehr darüber erzählen, warum Sie dies tun möchten, kann dies uns helfen, gute Antworten zu finden.
Willoller

Alles, was Sie mit git machen, ist lokal, bis Sie es mit auf den GitHub-Server übertragen git push origin _branch_.
Joe

Antworten:


239

Was ist los mit der --orphanOption? Wenn Sie einen Zweig möchten, der leer ist und keine Historie hat, ist dies der richtige Weg ...

git checkout --orphan empty-branch

Dann können Sie alle Dateien entfernen, die Sie im Staging-Bereich haben (damit sie nicht festgeschrieben werden):

git rm -rf .

Zu diesem Zeitpunkt befindet sich auf Ihrem Computer ein leerer Zweig.

Bevor Sie auf GitHub (oder ein anderes Git-Repository) pushen können, benötigen Sie mindestens ein Commit, auch wenn es keinen Inhalt enthält (dh leeres Commit), da Sie keinen leeren Zweig pushen können

git commit --allow-empty -m "root commit"

Schieben Sie es schließlich zur Fernbedienung und öffnen Sie ein Bier

git push origin empty-branch

3
Hallo, nach dem Erstellen eines leeren Zweigs zeigt das Github-Repository keinen Dateiunterschied an, wenn ich versuche, eine Pull-Anfrage von einem anderen Zweig zu erstellen. Können Sie mir sagen, wie ich das lösen kann?
Raghavendra S

@ RaghavendraS Siehe meine Antwort. Ich hatte das gleiche Problem.
Greg M. Krsak

1
Vielleicht haben einige Leute ein Problem mit dieser akzeptierten Antwort, weil ein git add .Schritt fehlt , nachdem Sie alle Dateien entfernt haben und bevor Sie sich verpflichten?
SCoyle

13

--orphan ist gut geeignet, um einen leeren Zweig lokal zu erstellen. Um ihn jedoch zu pushen oder mit anderen Zweigen zu interagieren, benötigen Sie ein Commit.

Das Erstellen eines neuen Commits für einen verwaisten Zweig ist keine gute Idee, da Sie nicht mit anderen Zweigen interagieren können. Dh

git checkout --orphan test
git commit --allow-empty -m "init test branch"
git merge master
fatal: refusing to merge unrelated histories

Stattdessen sollten Sie es vorziehen, einen neuen Zweig aus dem ersten Commit des Masters zu erstellen. Wenn das Commit nicht leer ist, können Sie vor dem ersten ein leeres Commit hinzufügen, wie in @houtanb erläutert.


5

Sie können auch den Anweisungen hier folgen , um ein leeres Commit im Stammverzeichnis Ihres masterZweigs zu erstellen . Erstellen Sie dann einfach Ihren releaseZweig, in dem sich das leere Root-Commit befindet.


2

Die akzeptierte Antwort führte mich zu einigen Problemen , also tat ich dies:

$ git branch
* staging
$ git branch master c74d99cf46f6ed23e742f2617e9908294b4a608b
$ git checkout master
Switched to branch 'master'

Und bekam, was ich wollte und ohne Probleme beim Zusammenführen / Ziehen. Ich musste nur ein Basis-Commit auswählen, um meinen zweiten Zweig daraus zu erstellen .


Wenn Ihr Zweig per Definition über ein Basis-Commit verfügt, handelt es sich nicht um einen leeren Zweig. Was waren die Probleme, die Sie beim Erstellen eines verwaisten Zweigs hatten?
C. Augusto Proiete
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.