W książce Pro Git jest napisane
„Pochodzenie” nie jest czymś wyjątkowym
Podobnie jak nazwa gałęzi „master” nie ma żadnego specjalnego znaczenia w Git, podobnie jak „origin”. Podczas gdy „master” jest domyślną nazwą gałęzi startowej, gdy uruchamiasz git init, co jest jedynym powodem, dla którego jest powszechnie używany , „origin” jest domyślną nazwą dla pilota po uruchomieniu git clone. Jeśli zamiast tego uruchomisz git clone -o booyah, będziesz mieć booyah / master jako domyślną gałąź zdalną.
Oznacza to, że możemy użyć domyślnej nazwy gałęzi jako gałąź główna lub gałąź główna lub coś w tym rodzaju. Nie widziałem żadnej opcji, man git-init
która zainicjuje mój repo
z inną domyślną nazwą gałęzi.
GitHub pokazuje, jak ustawić domyślną nazwę gałęzi na stronie ustawień. Ale nie mówię o tym, jak ustawić to w żadnej konkretnej witrynie hostingowej Git . Dokładnie pytam tylko o Git, a nie o jakąś konkretną witrynę hostingową Git .
Czy jest na to sposób?
źródło
Odpowiedzi:
Nowszy Git, nowe repozytorium
Od wersji 2.28.0 gita
git init
polecenie przyjmuje teraz--initial-branch
(lub-b
w skrócie) parametr. Te dwie komendy tworzą nowe repozytorium Git z gałęzią o nazwie „trunk”, która zawsze miała dla mnie więcej sensu niż „master” (master?):Można to skonfigurować za pomocą
init.defaultBranch
ustawienia. Jeśli chcę, aby wszystkie nowe repozytoria miały domyślną gałąź „trunk”:Starszy Git, nowe repozytorium
Niektóre systemy nadal mają starsze instalacje Git. Mój serwer Debian 10 (Buster, aktualna stabilna wersja z października 2020 r.) Zawiera Git 2.20, który nie obsługuje tej
-b
opcji. Jedną z opcji jest utworzenie repozytorium, a następnie zmiana nazwy gałęzi. Ta technika działa w przypadku zwykłych (nie nagich) repozytoriów:Spowoduje to utworzenie nowego repozytorium z
trunk
bieżącą gałęzią zamiastmaster
. Gałąźmaster
tak naprawdę nie istnieje - gałęzie nie są tworzone, dopóki nie będą miały co najmniej jednego zatwierdzenia. Dopóki gałąź nie zostanie utworzona, gałąź istnieje tylko w.git/HEAD
, co wyjaśnia, dlaczegomaster
gałąź zniknie po przełączeniu się natrunk
.Nagie repozytoria
W przypadku gołych repozytoriów nie można uruchomić
git checkout
(to znaczy być gołym). Zamiast tego możesz zmienić HEAD, aby wskazywał inną gałąź:Stare repozytoria
Jeśli już się zdecydowałeś, możesz
git branch -m
zamiast tego uruchomić :Spowoduje to zmianę nazwy gałęzi z
master
natrunk
po jej utworzeniu.Wydaje się to trochę niezgrabne, ponieważ mechanizm różni się w zależności od tego, czy repozytorium jest puste, ale działa. Możesz również potraktować to jako „tworzenie nowej gałęzi i usuwanie
master
”.źródło
git checkout -b trunk
. Czy to oznacza, że od tej pory domyślną gałęzią jest trunk?Możesz pośrednio skonfigurować
git init
użycie innej gałęzi domyślnej: bieżąca gałąź jest definiowana przezHEAD
, która jest „tylko” plikiem tekstowym informującym Git, który ref jest bieżący.Używając
init.templateDir
, możesz poprosićgit init
o użycie innego:aw
~/.config/git/template/HEAD
środku wstaw pojedynczą linię (+ podział wiersza):ref: refs/heads/main
(domyślnie to branchmain
).Cała zawartość
templateDir
jest kopiowana do.git
katalogu podczas tworzenia repozytorium; domyślny (tutaj/usr/share/git-core/templates
) zawiera kilka przykładowych punktów zaczepienia i innych plików, ale możesz użyć nowego katalogu szablonów, aby na przykład ustawić domyślne punkty zaczepienia.źródło
HEAD
plik w domyślnym szablonie, chociaż powie Ci, że „ponownie inicjalizujesz” repozytorium, kiedy je faktycznie tworzysz.Użyłbyś Git 2.28 (Q3 2020): nazwa głównej gałęzi w istniejących repozytoriach i domyślna nazwa używana dla pierwszej gałęzi w nowo utworzonych repozytoriach jest konfigurowalna, dzięki czemu możemy ostatecznie odzwyczaić się od zakodowanego na stałe '
master
”.I przypomnienie z sierpnia 2020 r. Z GitHub :
Ale wracając do samego Gita: (2.28, III kw.2020 ) Zobacz commit 508fd8e (29 czerwca 2020) autorstwa Đoàn Trần Công Danh (
sgn
) .Zobacz zatwierdzenie 0068f21 , zatwierdzenie a471214 , zatwierdzenie 0cc1b47 , zatwierdzenie 32ba12d , zatwierdzenie 6069ecc , zatwierdzenie f0a96e8 , zatwierdzenie 4d04658 (24 czerwca 2020) i zatwierdzenie 489947c (23 czerwca 2020) autorstwa Johannesa Schindelina (
dscho
) .Zobacz zatwierdzenie 8747ebb (24 czerwca 2020) autorstwa Don Goodman-Wilson (
DEGoodmanWilson
) .(Scalone przez Junio C Hamano -
gitster
- incommit 11cbda2 , 06 lipca 2020)I:
Uwaga: zatwierdzenie 489947c , dotyczące komunikatu o zatwierdzeniu przez scalanie, zostało cofnięte w Git 2.29, zobacz " Jak mogę dostosować komunikat zatwierdzenia przez git? ". Ustawienie pozostaje.
init.defaultBranch
Ma to wpływ na moduły podrzędne:
Zauważ, że w Git 2.29 (Q4 2020) testy w programie
contrib/
są dostosowywane do ostatniej zmiany wfmt-merge-msg
.Zobacz commit b87528c (03 sierpnia 2020) autorstwa Emily Shaffer (
nasamuffin
) .(Scalone przez Junio C Hamano -
gitster
- w zobowiązaniu 83b8250 , 10 sierpnia 2020 r.)Również:
W Git 2.29 (Q4 2020) zaktualizuj testy, aby usunąć
master
z nich słowo „ ”.Zobacz commit f33f2d3 , commit b6211b8 (26 września 2020) i commit 432f5e6 , commit 5a0c32b , commit 659288c (21 września 2020) autor: Johannes Schindelin (
dscho
) .(Scalone przez Junio C Hamano -
gitster
- w zobowiązaniu 58138d3 , 05 października 2020 r.)I nadal z Git 2.29:
Zobacz commit 538228e , commit a15ad5d (08 października 2020) autorstwa Johannesa Schindelina (
dscho
) .(Scalenie przez Junio C Hamano -
gitster
- w zatwierdzeniu 62564ba , 08 października 2020 r.)źródło
Od Git 2.28 (wydanego 27 lipca 2020 r.) Nowa opcja konfiguracji,
init.defaultBranch
Wprowadzono która ma zastąpić zakodowany terminmaster
.Domyślnie pozostaje
master
!Użytkownik może nadpisać domyślną wartość zmiennej konfiguracyjnej za pomocą:
Przeczytaj rozdział dotyczący git doc, aby uzyskać więcej informacji. Wprowadzenie do init.defaultBranch
źródło