Wie kann ich ein Git-Repository mit einem anderen Standardzweignamen als " master
" erstellen ?
Sie würden Git 2.28 (Q3 2020) verwenden: Der Name des primären Zweigs in vorhandenen Repositorys und der Standardname für den ersten Zweig in neu erstellten Repositorys werden konfigurierbar gemacht, damit wir uns schließlich vom fest codierten Zweig entwöhnen können. master
'.
Und Erinnerung vom August 2020 von GitHub :
Wenn Sie am 1. Oktober 2020 den Standardzweig für neue Repositorys für Ihren Benutzer, Ihre Organisation oder Ihr Unternehmen nicht geändert haben, ändert er sich automatisch von master
zumain
.
Sie können diese Änderung jederzeit abbestellen:
- Für Benutzer auf der Seite https://github.com/settings/repositories
- Für Organisationsinhaber auf der
https://github.com/organizations/YOUR-ORGANIZATION/settings/repository-defaults
Seite
- Für Unternehmensadministratoren auf der
https://github.com/enterprises/YOUR-ENTERPRISE/settings/member_privileges
Seite
Diese Änderung ist eine von vielen Änderungen, die GitHub vornimmt, um Projekte und Betreuer zu unterstützen, die ihren Standardzweig umbenennen möchten.
Weitere Informationen zu den vorgenommenen Änderungen finden Sie unter Github / Umbenennen .
Aber zurück zu Git selbst: (2.28, Q3 2020) Siehe Commit 508fd8e (29. Juni 2020) von Đoàn Trần Công Danh ( sgn
) .
Siehe Commit 0068f21 , Commit a471214 , Commit 0cc1b47 , Commit 32ba12d , Commit 6069ecc , Commit f0a96e8 , Commit 4d04658 (24. Juni 2020) und Commit 489947c (23. Juni 2020) von Johannes Schindelin ( dscho
) .
Siehe Commit 8747ebb (24. Juni 2020) von Don Goodman-Wilson ( DEGoodmanWilson
) .
(Zusammengeführt von Junio C Hamano - gitster
- inCommit 11cbda2 , 06. Juli 2020)
init
: Ermöglicht die Angabe des ursprünglichen Zweigstellennamens für das neue Repository
Unterzeichnet von: Johannes Schindelin
Es gibt eine wachsende Anzahl von Projekten und Unternehmen, die den Namen der Hauptniederlassung ihrer Repositories ändern möchten ( Hintergrundinformationen hierzu finden Sie beispielsweise in Mislav Marohnićs Tweet ).
Um diesen Zweignamen für neue Repositorys zu ändern, können Sie dies derzeit automatisch tun, indem Sie das gesamte Vorlagenverzeichnis von Git kopieren, den gewünschten Standardzweignamen fest in die .git/HEAD
Datei codieren und dann so konfigurieren init.templateDir
, dass er auf diese kopierten Vorlagendateien verweist.
Um diesen Vorgang weniger umständlich zu gestalten, führen wir eine neue Option ein : --initial-branch=<branch-name>
.
git init --initial-branch=hello myLocalRepo
# or
git config --global init.defaultBranch hello
git init myLocalRepo
Und:
init
: Ermöglicht das Festlegen des Standardwerts für den anfänglichen Zweignamen über die Konfiguration
Unterstützt von: Johannes Schindelin
Unterstützt von: Derrick Stolee
Unterzeichnet von: Don Goodman-Wilson
Wir haben gerade die Befehlszeilenoption eingeführt --initial-branch=<branch-name>
, um die Initialisierung eines neuen Repositorys mit einem anderen Anfangszweig als dem fest codierten zu ermöglichen.
Damit Benutzer den ursprünglichen Zweigstellennamen dauerhafter überschreiben können (dh ohne den Namen für jeden einzelnen manuell angeben zu müssen) git init
Aufruf ), führen wir die init.defaultBranch
Konfigurationseinstellung ein.
Hinweis: Commit 489947c über die Merge-Commit-Nachricht wurde seitdem in Git 2.29 zurückgesetzt. Siehe " Wie kann ich die Merge-Commit-Nachricht von Git anpassen? ".
Die init.defaultBranch
Einstellung bleibt erhalten.
Dies wirkt sich auf Submodule aus:
submodule
: Greifen Sie wegen fehlender Fernbedienung auf den Kopf der Fernbedienung zurück
Unterstützt von: Philippe Blain
Unterzeichnet von: Johannes Schindelin
Wenn remote.<name>.branch
nicht konfiguriert, wird git submodule update
derzeit auf die Verwendung des Zweignamens zurückgegriffen master
.
Eine viel bessere Idee ist jedoch die Verwendung der FernbedienungHEAD
: Auf allen Git-Servern, auf denen einigermaßen aktuelle Git-Versionen ausgeführt werden, zeigt das Symref HEAD
auf den Hauptzweig.
Hinweis: t7419 zeigt, dass es möglicherweise Anwendungsfälle gibt, bei denen erwartet wird , dassgit submodule update --remote
Submodule auf den Remote- master
Zweig aktualisiert werden, auch wenn der Remote-Zweig vorhanden istHEAD
auf einen anderen Zweig verweist.
Dieser Patch macht das Verhalten möglicherweise intuitiver, aber es besteht eine geringe Wahrscheinlichkeit, dass dies zu Regressionen in obskuren Setups führt.
Trotzdem sollte es in Ordnung sein, dieses Verhalten ohne eine längere Übergangszeit zu beheben:
- Das
git submodule update --remote
Befehl ist nicht wirklich üblich.
- Das Verhalten von Current Git beim Ausführen dieses Befehls ist geradezu verwirrend, es sei denn, der aktuelle Zweig des Remote-Repositorys ist
master
(in diesem Fall stimmt das vorgeschlagene Verhalten mit dem alten Verhalten überein).
- Wenn ein Benutzer aufgrund des geänderten Verhaltens auf eine Regression stößt, ist die Korrektur tatsächlich trivial: Wenn Sie auf einstellen
submodule.<name>.branch
, master
wird das alte Verhalten wiederhergestellt.
Beachten Sie, dass mit Git 2.29 (Q4 2020) die Tests in contrib/
an die letzte Änderung von angepasst werden fmt-merge-msg
.
Siehe Commit b87528c (03. August 2020) von Emily Shaffer ( nasamuffin
) .
(Zusammengeführt von Junio C Hamano - gitster
- in Commit 83b8250 , 10. August 2020)
Revert "contrib
: subtree
: Adjust Test auf Änderung in fmt-merge-msg
"
Abgemeldet von: Emily Shaffer
Dadurch wird das Commit 508fd8e8baf3e18ee40b2cf0b8899188a8506d07 zurückgesetzt .
In 6e6029a8 ( fmt-merge-msg
: Zusammenführungsziel wieder weglassen lassen) erhalten wir das Verhalten zurück, bei dem Zusammenführungen gegen ' master
' standardmäßig kein " into 'master'
" am Ende der Zusammenführungsnachricht enthalten. Dieser Testfix wird nicht mehr benötigt.
Ebenfalls:
Aktualisieren Sie mit Git 2.29 (Q4 2020) die Tests, um das Wort ' master
' von ihnen zu entfernen .
Siehe Commit f33f2d3 , Commit b6211b8 (26. September 2020) und Commit 432f5e6 , Commit 5a0c32b , Commit 659288c (21. September 2020) von Johannes Schindelin ( dscho
) .
(Zusammengeführt von Junio C Hamano - gitster
- in Commit 58138d3 , 05. Oktober 2020)
tests
: Vermeiden Sie Variationen des master
Filialnamens
Unterzeichnet von: Johannes Schindelin
Der Begriff master
hat eine geladene Geschichte, die als ständige Erinnerung an rassistische Ungerechtigkeit dient. Das Git-Projekt hat keine Lust, dies fortzusetzen, und hat bereits begonnen, es zu vermeiden.
Die Testsuite verwendet Variationen dieses Namens für andere als die Standardzweige. Abgesehen von t3200, wo wir dies gerade im vorherigen Commit angesprochen haben, können diese Instanzen automatisiert umbenannt werden, da sie keine Änderungen außerhalb des Testskripts erfordern. Lassen Sie uns das also tun.
Da die berührten Zweige (wenn überhaupt) sehr wenig mit dem Standardzweig zu tun haben, verwenden wir ein völlig separates Namensschema: topic_<number>
( topic-<number>
Dies kann nicht daran liegen, dass t5515 die test_oid
Maschinerie mit dem Begriff verwendet und diese Maschinerie intern Shell-Variablen verwendet. deren Namen keine Bindestriche enthalten dürfen).
Dieser Trick wurde durch diesen (GNU) sed-Aufruf ausgeführt:
$ sed -i 's/master\([a-z0-9]\)/topic_\1/g' t/t*.sh
Und immer noch mit Git 2.29:
Siehe Commit 538228e , Commit a15ad5d (08. Oktober 2020) von Johannes Schindelin ( dscho
) .
(Zusammengeführt von Junio C Hamano - gitster
- in Commit 62564ba , 08. Oktober 2020)
t1415
: Vermeiden Sie die Verwendung main
als Referenzname
Unterzeichnet von: Johannes Schindelin
Lassen Sie uns in Vorbereitung auf eine Patch-Serie, die das Fallback für init.defaultBranch
auf ändert main
, main
in diesem Testskript nicht als Referenznamen verwenden.
Andernfalls würde auch der ( Mann ), der diese Schiedsrichter fangen will, unerwartet fangen .git for-each-ref ... | grep main
refs/heads/main
Da es sich bei den fraglichen Refs um arbeitsbaumlokale handelt (dh jeder Arbeitsbaum hat seinen eigenen, genau wie HEAD
) und der Testfall bereits einen sekundären Arbeitsbaum mit dem Namen " second
" verwendet, verwenden wir first
stattdessen den Namen " " für diese Refs.
Passen Sie dabei die Testtitel an, die von einem "Repo" sprechen, wenn sie stattdessen einen "Arbeitsbaum" bedeuten.