Wir verwenden ein Git-Repository, um unser Projekt zu speichern. Wir haben unsere Filialen, die von der ursprünglichen Filiale abweichen. Aber jetzt wollen wir ein kleines neues Projekt erstellen, um einige Dokumentationen zu verfolgen. Dafür möchten wir einen neuen leeren Zweig erstellen, um mit dem Speichern unserer Dateien zu beginnen, und ich möchte, dass andere Benutzer des Netzwerks diesen Zweig klonen.
Wie können wir das machen?
Ich habe einige Dinge ausprobiert, aber sie haben nicht funktioniert.
$ mkdir proj_doc; cd proj_doc
$ git init
$ git add .
$ git commit -m 'first commit'
$ git br proj_doc
$ git co proj_doc
$ git br -d master
$ git push origin proj_doc
Es scheint den Zweig in Ordnung zu bringen, aber wenn ich einen Abruf oder Pull mache, werden Informationen aus anderen Zweigen heruntergeladen, und dann erhalte ich auch einige zusätzliche Dateien aus anderen Projekten. Was ist die beste Lösung?
quelle
submodule
im ursprünglichen Projekt, z. B.docs/
indem Sie auf dieses andere Repo zeigen. Wenn Sie den Code später zusammenführen möchten, fügen Sie ihn als Remote hinzu..gitignore
'd-Dateien behalten und ständig zwischen den beiden Wurzeln (Zweigen) wechseln müssen. Ich bin also auch für den neuen Repo-Ansatz, in einem neuen Ordner, mit denselben Fernbedienungen und in einem anderen Zweig.Antworten:
Sie können einen Zweig als Waise erstellen:
Dadurch wird ein neuer Zweig ohne Eltern erstellt. Anschließend können Sie das Arbeitsverzeichnis löschen mit:
und fügen Sie die Dokumentationsdateien hinzu, schreiben Sie sie fest und übertragen Sie sie auf github.
Durch Ziehen oder Abrufen werden immer die lokalen Informationen zu allen Remote-Zweigen aktualisiert. Wenn Sie nur die Informationen für einen einzelnen Remote-Zweig abrufen / abrufen möchten, müssen Sie diese angeben.
quelle
git checkout --orphan <branch>
; Ich sehe keine Auflistung von <branch> ingit branch
.git checkout --orphan
kann mangit reset --hard
übrig gebliebene Dateien löschen.git checkout --orphan <branch>
ist, dass er noch keine Commits hat. Nach dem ersten Commit wirdgit branch
der neue Zweig gedruckt.Die richtige Antwort besteht darin, einen verwaisten Zweig zu erstellen. Wie das geht, erkläre ich ausführlich in meinem Blog. (Archivierter Link)
quelle
Erstellen Sie einen leeren neuen Zweig wie folgt:
Wenn sich Ihre proj-doc-Dateien bereits in einem Commit unter einem einzelnen Unterverzeichnis befinden, können Sie den neuen Zweig folgendermaßen erstellen:
die als könnte bequemer sein ,
git branch --orphan
wenn , dass Sie mit viel verlassen würdegit rm
undgit mv
ing zu tun.Versuchen
und sehen Sie, ob dies bei Ihrem Problem hilft, zu viel zu holen. Auch wenn Sie wirklich nur einen einzelnen Zweig abrufen möchten, ist es am sichersten, ihn einfach in der Befehlszeile anzugeben.
quelle
git checkout --orphan new-branch; git reset --hard
xargs
?Wenn Ihre Git-Version nicht über die Option --orphan verfügt, sollte diese Methode verwendet werden:
Nach einiger Arbeit:
quelle
git clean
können Sie Dateien löschen, die Sie nicht löschen möchten! Führen Siegit clean -ndx
zuerst aus, um zu sehen, welche Dateien gelöscht werden, bevor Sie sie mit der-f
Option real ausführen .Angenommen, Sie haben einen
master
Zweig mit Dateien / Verzeichnissen:Schritt für Schritt, wie man einen leeren Zweig macht:
git checkout —orphan new_branch_name
ls -la |awk '{print $9}' |grep -v git |xargs -I _ rm -rf ./_
git rm -rf .
touch new_file
git add new_file
git commit -m 'added first file in the new branch'
git push origin new_branch_name
In Schritt 2 entfernen wir einfach alle Dateien lokal, um Verwechslungen mit den Dateien in Ihrem neuen Zweig und denjenigen, die Sie im
master
Zweig behalten, zu vermeiden . Dann heben wir die Verknüpfung aller dieser Dateien in Schritt 3 auf. Schließlich arbeiten Schritt 4 und danach mit unserem neuen leeren Zweig.Sobald Sie fertig sind, können Sie ganz einfach zwischen Ihren Filialen wechseln:
quelle
Auf Basis dieser Antwort von Hiery Nomus .
Sie können einen Zweig als Waise erstellen:
Dadurch wird ein neuer Zweig ohne Eltern erstellt. Anschließend können Sie das Arbeitsverzeichnis löschen mit:
Und dann schreiben Sie einfach einen Zweig mit leerem Commit fest und drücken dann
quelle
Schauen Sie sich diese Dokumentation an , sie enthält klare Details zu
quelle
Ich fand diese Hilfe:
quelle