Im Pro Git-Buch heißt es
"Herkunft" ist nichts Besonderes
So wie der Filialname "master" in Git keine besondere Bedeutung hat, hat auch "origin" keine besondere Bedeutung. Während "master" der Standardname für einen Startzweig ist, wenn Sie git init ausführen, was der einzige Grund ist, warum er häufig verwendet wird , ist "origin" der Standardname für eine Fernbedienung, wenn Sie git clone ausführen. Wenn Sie stattdessen git clone -o booyah ausführen, haben Sie booyah / master als Standard-Remote-Zweig.
Das heißt, wir können unseren Standardzweignamen als Haupt- oder Hauptzweig oder ähnliches verwenden. Ich habe keine Option gesehen, bei man git-init
der meine repo
mit einem anderen Standardzweignamen initialisiert wird .
GitHub zeigt auf seiner Einstellungsseite , wie der Standardzweignname festgelegt wird . Aber ich spreche nicht darüber, wie man es auf einer bestimmten Git-Hosting-Site einstellt . Ich frage nur in Bezug auf Git, nicht in Bezug auf eine bestimmte Git-Hosting-Site .
Gibt es eine Möglichkeit, das zu tun?
quelle
Antworten:
Neueres Git, neues Repo
Seit Git Version 2.28.0 nimmt der
git init
Befehl jetzt einen--initial-branch
(oder-b
kurz) Parameter an. Diese beiden Befehle erstellen ein neues Git-Repo mit einem Zweig namens "trunk", was für mich immer sinnvoller war als "master" (master of what?):Dies ist mit der
init.defaultBranch
Einstellung konfigurierbar . Wenn ich möchte, dass alle neuen Repos "Trunk" als Standardzweig haben:Älterer Git, New Repo
Einige Systeme haben noch ältere Git-Installationen. Mein Debian 10-Server (Buster, die aktuelle stabile Version ab Oktober 2020) wird mit Git 2.20 geliefert, das diese
-b
Option nicht unterstützt . Eine Möglichkeit besteht darin, das Repository zu erstellen und dann den Filialnamen zu ändern. Diese Technik funktioniert für normale (nicht nackte) Repos:Dadurch wird ein neues Repository mit
trunk
dem aktuellen Zweig anstelle von erstelltmaster
. Der Zweigmaster
existiert nicht wirklich - die Zweige werden erst erstellt, wenn sie mindestens ein Commit haben. Bis der Zweig erstellt wird, existiert der Zweig nur in.git/HEAD
, was erklärt, warum dermaster
Zweig verschwindet, wenn Sie zu wechselntrunk
.Nackte Repos
Für nackte Repos können Sie nicht laufen
git checkout
(das bedeutet, nackt zu sein). Stattdessen können Sie HEAD so ändern, dass es auf einen anderen Zweig zeigt:Alte Repos
Wenn Sie sich bereits verpflichtet haben, können Sie
git branch -m
stattdessen Folgendes ausführen :Dadurch wird der Zweig von
master
nachtrunk
seiner Erstellung in umbenannt.Dies scheint etwas umständlich zu sein, da der Mechanismus unterschiedlich ist, je nachdem, ob das Repository leer ist, aber es funktioniert. Sie können es auch als "Erstellen eines neuen Zweigs und Löschen
master
" betrachten.quelle
git checkout -b trunk
. Bedeutet das, dass von da an der Standardzweig Trunk ist?Sie können indirekt konfigurieren
git init
, dass ein anderer Standardzweig verwendet wird: Der aktuelle Zweig wird definiert durch.HEAD
Dies ist „nur“ eine Textdatei, die Git mitteilt, welche Referenz die aktuelle ist.Mit
init.templateDir
können Siegit init
nach einem anderen fragen :und in
~/.config/git/template/HEAD
, setzen Sie eine einzelne Zeile (+ Zeilenumbruch):ref: refs/heads/main
(standardmäßig zu verzweigenmain
).Der gesamte Inhalt von
templateDir
wird.git
beim Erstellen eines Repositorys in das Verzeichnis kopiert . Die Standardeinstellung (hier/usr/share/git-core/templates
) enthält einige Beispiel-Hooks und andere Dateien. Sie können jedoch Ihr neues Vorlagenverzeichnis verwenden, um beispielsweise Standard-Hooks einzurichten.quelle
HEAD
Datei in der Standardvorlage erstellen. Sie erfahren jedoch, dass Sie ein Repository "neu initialisieren", wenn Sie tatsächlich eine 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 :
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)Und:
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:
Beachten Sie, dass mit Git 2.29 (Q4 2020) die Tests in
contrib/
an die letzte Änderung von angepasst werdenfmt-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)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)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)quelle
Seit Git 2.28 (veröffentlicht am 27. Juli 2020) wird eine neue Konfigurationsoption
init.defaultBranch
eingeführt, um den fest codierten Begriff zu ersetzenmaster
.Standard bleibt bis
master
!Der Benutzer kann den Standardwert der Konfigurationsvariablen überschreiben mit:
Weitere Informationen finden Sie im Kapitel zu git doc. Einführung in init.defaultBranch
quelle