programing

"master"가 아닌 기본 브랜치 이름으로 Git 저장소를 만들려면 어떻게 해야 합니까?

nicescript 2023. 5. 22. 23:25
반응형

"master"가 아닌 기본 브랜치 이름으로 Git 저장소를 만들려면 어떻게 해야 합니까?

Pro Git 책에는 다음과 같이 쓰여 있습니다.

"discovery"는 특별하지 않습니다.

분기 이름 "master"가 Git에서 특별한 의미를 갖지 않는 것처럼 "origin"도 마찬가지입니다.git를 실행할 때 "master"가 시작 분기의 기본 이름인 반면, git 클론을 실행할 때 "origin"은 원격의 기본 이름입니다.git clone -obooyah를 대신 실행하면 booyah/master가 기본 원격 분기로 설정됩니다.

즉, 기본 지점 이름을 주 지점 또는 주 지점으로 사용할 수 있습니다.에서 선택할 수 있는 옵션이 없었습니다.man git-init나의 초기화를 할 것입니다.repo다른 기본 분기 이름을 사용합니다.

GitHub은 설정 페이지에서 기본 분기 이름을 설정하는 방법을 보여줍니다.하지만 나는 그것을 특정 Git 호스팅 사이트에서 어떻게 설정할 것인지에 대해 말하는 것이 아닙니다.나는 Git 호스팅 사이트에 대해서는 절대로 묻지 않고 Git만의 관점에서 요청하는 것입니다.

그렇게 할 수 있는 방법이 있습니까?

새로운 깃, 새로운 레포

2 이후 Git 전 2.28.0 후git init command는 " " " " 를 합니다.--initial-branch(또는)-b간단히) 매개 변수입니다.이 두 명령은 "trunk"라는 분기를 가진 새 Gitrepo를 만듭니다. 이 분기는 항상 "master"(master of what?)보다 의미가 있습니다.

git init --initial-branch=trunk
git init -b trunk

이 기능은 다음과 같이 구성할 수 있습니다.init.defaultBranch설정 에 "모든 새 리포지토리에 "트렁크"를 기본 분기로 설정하려면:

git config --global init.defaultBranch trunk

올드 깃, 뉴 레포

일부 시스템에는 여전히 이전 Git 설치가 있습니다.내 Debian 10 서버(Buster, 2020년 10월 현재 안정된 버전)는 Git 2.20과 함께 제공되며, Git 2.20은 지원하지 않습니다.-b 만든 .한 가지 옵션은 리포지토리를 만든 다음 분기 이름을 변경하는 것입니다.normal ( repos " " " " " " 에 됩니다.

git init
git checkout -b trunk

그러면 다음을 사용하여 새 리포지토리가 생성됩니다.trunk대신에 현재의 지부로서.master 점지master실제로 존재하지 않습니다. 분기는 적어도 하나 이상의 커밋을 가질 때까지 생성되지 않습니다.는 분가생때분까다기음위존치재다합니만에는성기지에만 합니다..git/HEAD그것이 왜 그 이유를 설명합니다.master는 으로전면분사라다니집기가하로 .trunk.

베어 레포

repos의 에는 기본저경실수없다습니를 실행할 수 .git checkout(그것이 맨몸이 된다는 것을 의미합니다.할 수 있습니다: "HEAD"라는 이름의 "HEAD"입니다.

git init --bare
git symbolic-ref HEAD refs/heads/trunk

이전 저장소

미이커경실수있다니습행할우를 할 수 .git branch -m대신:

git init
touch file.txt
git add file.txt
git commit -m 'commit 1'
git branch -m trunk

이 분의이변다니경에서 변경됩니다.mastertrunk생성된 후.

저장소가 비어 있는지 여부에 따라 메커니즘이 다르기 때문에 이 작업은 다소 엉성해 보이지만 작동합니다."새및 삭제"로.master".

간적으구수있다를 수 .git init분기를 하려면: 는 다른기본분기하: 현분다같정이다의로 정의됩니다.HEAD어떤 참조가 현재 참조인지 Git에게 알려주는 텍스트 파일입니다.

용사를 합니다.init.templateDir물어볼 수 있습니다git init다른 것을 사용하는 방법:

# ~/.config/git/config or ~/.gitconfig
[init]
    templateDir = ~/.config/git/template/

그고리로.~/.config/git/template/HEAD단일 줄 바꿈(+줄 바꿈): ref: refs/heads/main(으로 branch(branch)로 설정됨main).

의 전체 templateDir는 복됩니다로 됩니다..git할 때 (여기서 " 리토리를여", "기값기리")/usr/share/git-core/templates 파일이 새 후크를 할 수 에는 일부 샘플 후크 및 기타 파일이 포함되어 있지만 새 템플릿 디렉토리를 사용하여 기본 후크를 설정할 수 있습니다.

$ tree /usr/share/git-core/templates
/usr/share/git-core/templates
├── branches
├── description
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── fsmonitor-watchman.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   ├── pre-receive.sample
│   └── update.sample
└── info
    └── exclude

3 directories, 13 files

Git 2.28(2020년 7월 27일 출시) 이후 새로운 구성 옵션,init.defaultBranch하드 코딩된 용어를 대체하기 위해 도입되고 있습니다.master.

기본값은 다음으로 유지됩니다.master!

사용자는 다음을 사용하여 구성 변수의 기본값을 재정의할 수 있습니다.

$ git config --global init.defaultBranch main

자세한 내용은 gitdoc 장을 참조하십시오. init.defaultBranch 소개

" 이외의 기본 분기 이름으로 Git 저장소를 만들려면 어떻게 해야 합니까?master"?

2)을 합니다. 의 첫 되는 기본 을 구성할 수 'Git 2.28(2020년 3분기)'에서 벗어날 수 . 기존 리포지토리의 기본 분기 이름과 새로 생성된 리포지토리의 첫 번째 분기에 사용되는 기본 이름이 구성 가능하므로 하드코딩에서 최종적으로 벗어날 수 있습니다.master'.

2020년 8월 GitHub에서 알림:

2020년 10월 1일에 사용자, 조직 또는 기업의 리포지토리에 대한 기본 분기를 변경하지 않은 경우 에서 로 자동으로 변경됩니다.
언제든지 이 변경을 취소할 수 있습니다.

  • 사용자의 경우 https://github.com/settings/repositories 페이지
  • 소유자의 경우, 에서,https://github.com/organizations/YOUR-ORGANIZATION/settings/repository-defaults페이지입니다.
  • 관리자의 경우 엔터라경에서https://github.com/enterprises/YOUR-ENTERPRISE/settings/member_privileges페이지입니다.

이 변경 사항은 GitHub가 기본 분기의 이름을 변경하려는 프로젝트 및 유지 관리자를 지원하기 위해 수행하는 많은 변경 사항 중 하나입니다.
변경 내용에 대한 자세한 내용은 github/rename을 참조하십시오.

그러나 Git 자체로 돌아가기: (2.28, 2020년 3분기) Doan Trần Cong Danh()sgncommit 508fd8e(2020년 6월 29일)를 참조.
커밋 0068f21, 커밋 a471214, 커밋 0cc1b47, 커밋 32ba12d, 커밋 6069ecc, 커밋 f0a96e8, 커밋 4d04658(2020년 6월 24일), 커밋 489947c(2020년 6월 23일)를 요하네스 쉰들린()dscho의 커밋을 참조하십시오.
굿맨-윌슨()DEGoodmanWilson의 커밋 8747 ebb(2020년 6월 24일)를 참조하십시오.
(주니오 C 하마노에 의해 합병 ---- 커밋 11cbda2, 2020년 7월 6일)

init새 리포지토리의 초기 분기 이름 지정 허용

사인 오프 바이: 요하네스 쉰들린

저장소의 주 지점 이름을 변경하려는 프로젝트 및 회사의 수가 증가하고 있습니다(예:에 대한 배경을 위한 미슬라프 마론니치의 트윗).

을 변경하려면 디렉터리를 복사한 기본 이름을 새지토 의리면려로 ..git/HEAD합니다.init.templateDir복사된 템플릿 파일을 가리킵니다.

덜 새로운 해 보겠습니다.--initial-branch=<branch-name>.

git init --initial-branch=hello myLocalRepo
# or
git config --global init.defaultBranch hello
git init myLocalRepo

그리고:

init구성을 통해 초기 분기 이름에 대한 기본 설정 허용

도움을 받은 사람: 요하네스 쉰들린
도움을 받은 사람: 데릭 스톨리
사인 오프 바이: 돈 굿맨-윌슨

옵션을 했습니다.--initial-branch=<branch-name>하드 코딩된 저장소와 다른 초기 분기를 사용하여 새 리포지토리를 초기화할 수 있습니다.

가 초기 을 더할 수 위해, 각 및 할 필요 없이).git init출호겠, 소하습다니개를 하겠습니다.init.defaultBranch구성 설정.

참고: 병합 커밋 메시지에 대한 커밋 489947c는 이후 Git 2.29에서 반환되었습니다. "Git의 병합 커밋 메시지를 어떻게 사용자 지정할 수 있습니까?"를 참조하십시오.
init.defaultBranch설정이 남아 있습니다.


이는 하위 모듈에 영향을 미칩니다.

누락된 원격을 위해 원격의 헤드로 다시 submodule이동합니다.분점

필립 블레인
사인 오프 바이: 요하네스 쉰들린

remote.<name>.branch구성되지 않았습니다. 현재 지점 이름 사용으로 되돌아갑니다.master.
하지만 훨씬 더 좋은 생각은 리모콘을 사용하는 것입니다.HEAD 최근의 버전을 당버최의근Git전실는하서버에모symrefHEAD주요 분기점을 가리킵니다.

참고: t7419는 원격으로 하위 모듈을 업데이트할 것으로 예상되는git submodule update --remote 사용 사례가 있음을 보여줍니다.master리모콘이라도 분기HEAD다른 분기를 가리킵니다.
이 패치는 동작을 보다 직관적으로 만들 수 있지만 모호한 설정에서 회귀를 일으킬 가능성이 약간 있습니다.

그렇다고 해도, 더 긴 전환 기간과 같은 것 없이 이 동작을 수정하는 것은 괜찮을 것입니다.

  • 이 명령은 일반적이지 않습니다.
  • 원격 리포지토리의 현재 분기가 다음과 같은 경우가 아니면 이 명령을 실행할 때 현재 Git의 동작은 완전히 혼란스럽습니다. master(이 경우 제안된 동작이 이전 동작과 일치합니다.)
  • 변경된 동작으로 인해 사용자가 회귀를 발견하는 경우 수정은 실제로 사소한 것입니다.submodule.<name>.branchmaster예전의 행동을 회복시킬 것입니다.

2 4분기)에서는 Git 2.29 (2020년 4분기)에서 contrib/의 변경 사항에 수정되었습니다.fmt-merge-msg.

에밀리 셰퍼()nasamuffin의 커밋 b87528c(2020년 8월 3일)를 참조하십시오.
(주니오 C 하마노에 의해 합병 -- 83b8250, 2020년 8월 10일 커밋)

Revert "contrib:subtree 있록테조정트스도에서 하도록 테스트 fmt-merge-msg"

사인 오프 바이: 에밀리 셰퍼

508fd8e8baf3e18ee40b2cf0b8899188a8506d07을 반환합니다.

6e6029a8(fmt-merge-msgdestination을 수 있도록 ) '에 대해합니다.master" 본적으을로를않" (기) "포지음하함않"를포함하지 .into 'master'병합 메시지의 끝에 표시됩니다.이 테스트 수정은 더 이상 필요하지 않습니다.

또한:

Git 2.29(2020년 4분기)를 사용하여 테스트를 단어 드롭으로 업데이트합니다.master그들로부터.

커밋 f33f2d3, 커밋 b6211b8(2020년 9월 26일), 커밋 432f5e6, 커밋 5a0c32b, 커밋 659288c(2020년 9월 21일)를 요하네스 쉰들린()dscho 참조.
(주니오 C 하마노에 의해 합병 -- -- 커밋 58138d3, 05 Oct 2020)

tests의 변화를 피합니다.master

사인 오프 바이: 요하네스 쉰들린

어용master인종적 부당함을 끊임없이 상기시키는 역할을 하는 풍부한 역사를 가지고 있습니다.Git 프로젝트는 이것을 영구화할 의사가 없으며 이미 피하기 시작했습니다.

테스트 제품군은 기본 분기가 아닌 다른 분기에 대해 이 이름의 변형을 사용합니다.이전 커밋에서 이 문제를 다룬 t3200을 제외하고는 테스트 스크립트 외부에서 변경할 필요가 없기 때문에 이러한 인스턴스의 이름을 자동으로 바꿀 수 있습니다.

터치한 분기는 기본 분기와 거의 관련이 없으므로 완전히 별도의 이름 지정 체계를 사용합니다.topic_<number>(그럴 수 없습니다.topic-<number>왜냐하면 t5515가 사용하기 때문입니다.test_oid이름에 대시를 포함할 수 없는 셸 변수를 내부적으로 사용하는 기계).

이 트릭은 다음(GNU) 사용 호출에 의해 수행되었습니다.

$ sed -i 's/master\([a-z0-9]\)/topic_\1/g' t/t*.sh

그리고, Git 2.29:

커밋 538228e, 15ad5d(2020년 10월 8일)를 요하네스 쉰들린()dscho의 커밋을 참조하십시오.
(주니오 C 하마노에 의해 합병 -- -- 커밋 62564ba, 2020년 10월 8일)

t1415사용을 피합니다.main심판명으로

사인 오프 바이: 요하네스 쉰들린

의 폴백을 변경할 패치 시리즈에 대비하여init.defaultBranch로.main사용하지 맙시다main이 테스트 스크립트의 참조 이름입니다.

그렇지 않으면, 그 심판들을 잡으려는 사람도 예상치 못하게 잡힐 것입니다.refs/heads/main.

문제의 참조는 워크트리-로컬 참조이므로(즉, 각 워크트리는 다음과 같이 고유합니다.HEAD), 테스트 사례는 이미 "라는 보조 작업 트리를 사용하고 있기 때문입니다.second"라는 이름을 사용합니다.first대신 그 심판들을 위해.

작업하는 동안 "작업 트리"를 의미할 때 "레포"에 대해 말하는 테스트 제목을 조정합니다.

Azure Devops를 사용하는 경우:

  1. 프로젝트 보고서에서 분기를 선택합니다.

  2. 분기 페이지에서 원하는 새 기본 분기 옆에 있는 추가 옵션을 선택하고 기본 분기로 설정을 선택합니다.

enter image description here

  1. 새 기본 분기를 설정한 후 원하는 경우 이전 기본값을 삭제할 수 있습니다.

언급URL : https://stackoverflow.com/questions/42871542/how-can-i-create-a-git-repository-with-the-default-branch-name-other-than-maste

반응형