" master
" 이외의 기본 브랜치 이름으로 Git 저장소를 생성하려면 어떻게 해야합니까?
Git 2.28 (2020 년 3 분기)을 사용합니다. 기존 리포지토리의 기본 브랜치 이름과 새로 생성 된 리포지토리의 첫 번째 브랜치에 사용되는 기본 이름이 구성 가능해 지므로 결국 하드 코딩 된 '에서 벗어날 수 있습니다. master
'.
그리고 2020 년 8 월 GitHub의 알림 :
당신은 사용자, 조직 또는 기업을위한 새로운 저장소에 대한 기본 분기를 변경하지 않은 경우 2020년 10월 1일에서 자동으로 변경됩니다 master
에main
.
이 변경 사항은 언제든지 선택 해제 할 수 있습니다.
- 사용자의 경우 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 / renaming을 참조하십시오 .
그러나 다시 힘내 자체 (2.28, Q3 2020) 참조가 508fd8e 커밋 에 의해 (2020년 6월 29일)를 Đoàn 트란 콩 DANH ( sgn
) .
참조 0068f21 커밋 , a471214 커밋 , 0cc1b47 커밋 , 32ba12d 커밋 , 6069ecc 커밋 , f0a96e8 커밋 , 4d04658 커밋 (2020 6월 24일), 및 489947c을 투입 하여 (2020년 6월 23일) 요하네스 Schindelin ( dscho
) . Don Goodman-Wilson ( )의 commit 8747ebb (2020 년 6 월 24 일)를
참조하십시오 . (의해 병합 Junio C 하마노 - - 에DEGoodmanWilson
gitster
commit 11cbda2 , 2020 년 7 월 6 일)
init
: 새 저장소에 대한 초기 분기 이름을 지정할 수 있습니다.
서명자 : Johannes Schindelin
리포지토리의 메인 브랜치 이름을 변경하고자하는 프로젝트와 회사가 점점 늘어나고 있습니다 (예를 들어 이에 대한 배경은 Mislav Marohnić의 트윗 참조 ).
새 리포지토리의 브랜치 이름을 변경하려면 현재 자동으로 수행하는 유일한 방법은 Git의 모든 템플릿 디렉토리를 복사 한 다음 원하는 기본 브랜치 이름을 .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
: 구성을 통해 초기 분기 이름에 대한 기본값 설정 허용
지원자 : Johannes Schindelin 지원자 : Derrick Stolee
서명자 : Don Goodman-Wilson
방금 --initial-branch=<branch-name>
하드 코딩 된 분기와 다른 초기 분기로 새 저장소를 초기화 할 수 있는 명령 줄 옵션 을 도입했습니다 .
사용자가 초기 브랜치 이름을 더 영구적으로 재정의 할 수 있도록 (즉, 각 git init
호출 마다 이름을 수동으로 지정할 필요없이 ) init.defaultBranch
구성 설정을 소개하겠습니다 .
참고 : merge commit 메시지에 대한 commit 489947c 는 이후 Git 2.29에서 되돌 렸습니다. " how can I customize git 's merge commit message? "를 참조하십시오. 설정은 남아있다.
init.defaultBranch
이는 하위 모듈에 영향을줍니다.
submodule
: remote..branch 누락에 대한 원격의 HEAD로 폴백
지원자 : Philippe Blain
서명자 : Johannes Schindelin
때 remote.<name>.branch
구성되지 않은, git submodule update
현재 분기의 이름을 사용하여 다시 폭포 master
.
그러나 훨씬 더 좋은 아이디어는 remote를 사용하는 것입니다 HEAD
. 합리적으로 최신 Git 버전을 실행하는 모든 Git 서버에서 symref HEAD
는 메인 브랜치를 가리 킵니다.
참고 : t7419 는 원격 이 다른 분기를 가리 키 더라도 원격 분기 에 대한 하위 모듈을 업데이트 할 것으로 예상 되는 사용 사례 가 있을 수 있음을 보여줍니다 .
틀림없이이 패치는 동작을보다 직관적으로 만들지 만 모호한 설정에서 회귀를 일으킬 가능성이 약간 있습니다. git submodule update --remote
master
HEAD
그렇더라도 더 긴 전환 기간없이이 동작을 수정하는 것이 좋습니다.
- 이
git submodule update --remote
명령은 실제로 일반적이지 않습니다.
- 이 명령을 실행할 때 현재 Git의 동작은 원격 저장소의 현재 분기 가
master
(이 경우 제안 된 동작이 이전 동작과 일치 하지 않는 경우) 완전히 혼란 스럽습니다 .
- 사용자 인해 변경된 동작에 회귀가 발생하면 수정 실제로 간단하다 : 설정
submodule.<name>.branch
하려면 master
이전 동작을 복원합니다.
Git 2.29 (2020 년 4 분기)에서는의 테스트 contrib/
가 fmt-merge-msg
.
Emily Shaffer ( )의 commit b87528c (2020 년 8 월 3 일)를 참조하십시오 . (Merged by Junio C Hamano -- in commit 83b8250 , 10 Aug 2020)nasamuffin
gitster
Revert "contrib
: subtree
: fmt-merge-msg
" 에서 변경하도록 테스트 조정
서명자 : Emily Shaffer
커밋 508fd8e8baf3e18ee40b2cf0b8899188a8506d07을 되돌 립니다 .
에서 6e6029a8는 ( fmt-merge-msg
우리가 '에 대한 병합 동작 돌아가 병합 대상이 다시 생략 할 수 있도록) master
기본적으로하지 않습니다가,' "를 포함 into 'master'
병합 메시지의 끝을". 이 테스트 수정은 더 이상 필요하지 않습니다.
또한:
Git 2.29 (2020 년 4 분기)에서는 테스트에서 ' master
' 단어를 삭제하도록 업데이트 합니다.
참조 f33f2d3 커밋 , b6211b8을 커밋 (2020년 9월 26일), 및 432f5e6 커밋 , 5a0c32b 커밋 , 659288c을 투입 하여 (2020년 9월 21일) 요하네스 Schindelin ( dscho
) .
(Merged by Junio C gitster
Hamano -- in commit 58138d3 , 05 Oct 2020)
tests
: master
브랜치 이름의 변형 방지
서명자 : Johannes Schindelin
이 용어 master
는 인종적 불의를 지속적으로 상기시키는 역할을하는로드 된 역사를 가지고 있습니다. Git 프로젝트는 이것을 영속시키고 싶지 않고 이미 그것을 피하기 시작했습니다.
테스트 스위트는 기본 이름 이외의 분기에 대해이 이름의 변형을 사용합니다. 이전 커밋에서이 문제를 방금 해결 한 t3200을 제외하고 이러한 인스턴스는 테스트 스크립트 외부에서 변경이 필요하지 않기 때문에 자동화 된 방식으로 이름을 바꿀 수 있습니다.
터치 된 브랜치가 기본 브랜치와 거의 관련 topic_<number>
이 topic-<number>
없기 때문에 우리는 완전히 별개의 이름 지정 체계를 사용하기로 선택했습니다. ( t5515가 test_oid
기계를 용어와 함께 사용하고 기계가 내부적으로 쉘 변수를 사용 하기 때문입니다 . 이름에 대시를 포함 할 수 없음).
이 트릭은이 (GNU) sed 호출에 의해 수행되었습니다.
$ sed -i 's/master\([a-z0-9]\)/topic_\1/g' t/t*.sh
그리고 여전히 Git 2.29를 사용합니다.
Johannes Schindelin ( )의 commit 538228e , commit a15ad5d (2020 년 10 월 8 일)를 참조하십시오 . (Merged by Junio C Hamano -- in commit 62564ba , 08 Oct 2020)dscho
gitster
t1415
: main
참조 이름으로 사용하지 마십시오
서명자 : Johannes Schindelin
의 가을 - 다시 변경하는 패치 시리즈에 대비 init.defaultBranch
에를 main
,의는 사용하지 말자 main
,이 테스트 스크립트에서 심판의 이름으로.
그렇지 않으면 해당 참조를 잡으려 는 ( man ) 도 예기치 않게 .git for-each-ref ... | grep main
refs/heads/main
문제의 ref는 worktree-local의 것이므로 (즉, 각 워크 트리는 고유 한,처럼 HEAD
) 테스트 케이스에서 이미 " second
" 라는 보조 워크 트리를 사용하므로 first
대신 해당 ref에 " " 라는 이름을 사용하겠습니다 .
그 동안 "작업 트리"를 의미하는 "리포지토리"에 대해 말하는 테스트 제목을 조정하십시오.