10P by neo 7시간전 | ★ favorite | 댓글 9개
  • Git 3.0부터 새 저장소 생성 시 기본 브랜치가 자동으로 main 으로 설정됨
  • 이번 변경은 Git 2.52 패치 노트에 명시된 내용으로, Git 3.0부터 git init 명령이 ‘master’ 대신 ‘main’을 사용함
  • Software Freedom Conservancy가 2020년 6월 기본 브랜치명 변경 계획을 발표했고, GitHub은 같은 해 10월부터 이를 적용함
  • Git 3.0은 아직 출시일이 정해지지 않았으며, 2026년 말경 공개될 것으로 추정됨
  • 새 버전에는 SHA-256 해시 전환, 저장 형식 개선, Rust 통합 빌드 프로세스 등 주요 변경이 포함됨

Git 3.0의 기본 브랜치 변경

  • Git 3.0부터 새 저장소를 생성할 때 기본 브랜치가 ‘main’ 으로 자동 설정됨
    • 사용자는 더 이상 기본 브랜치를 수동으로 지정할 필요 없음
  • Git 2.52 패치 노트에는 “Git 3.0부터 git init 명령이 ‘master’ 대신 ‘main’을 초기 브랜치로 사용한다”는 문구가 포함됨
  • 이 변경은 Git 프로젝트의 공식 방향 전환으로, 기존 ‘master’ 명칭을 대체함

배경 및 관련 동향

Git 3.0의 출시 일정

Git 3.0의 주요 기술적 변경 사항

  • 기본 해시 함수가 SHA-1에서 SHA-256으로 변경되어 보안성이 강화됨
  • 저장 형식이 개선되어 macOS와 Windows 환경에서의 성능 및 호환성이 향상됨
  • Rust 언어가 Git 빌드 프로세스에 공식 통합되어 코드 품질과 유지보수성이 향상될 예정임

시대에 맞는 변화인 거 같습니다.

솔직히 이유는 어처구니 없다고 생각하지만 아무튼 6글자에서 4글자로 바뀌었다는 사소한 이유로 환영합니다.

pc적 논쟁이랑 별개로, 깃허브랑 통일된건 잘된 일이네요
깃허브가 main에서 master로 돌아갈 일은 없을테니...

이런식이면 orphan은 어떡하라고...

닭볶음탕 IT버전

man도 불편하니 doc으로 바꿉시다라고 드립치려고 했는데 HN에 이미 달렸네요 ㅋ

정말 쓸데없는걸로 에너지 낭비하네요.

노예제가 있었던 사실이랑, master slave랑 뭔상관이야

Hacker News 의견
  • 솔직히 개인적으로는 신경 쓰지 않지만, 이제 “master”는 사실상 끝났음

    • 일부 시니어 개발자들도 이름 변경을 원했음
    • 어쨌든 “main”이 기본으로 자리 잡았고, 이제 그냥 넘어갈 때임
    • 어떤 사람들은 이 변화가 엔지니어링 리소스 낭비라고 생각했음
      • 영화 업계에서 “mastering”이라는 용어를 여전히 쓰는데, 바꿀 이유가 없다고 주장함
      • 이런 단어 검열이 사회적 분열을 키운다고 봄
    • 다른 사람은 단순히 기본값 문제일 뿐이라고 말함
      • 여전히 init.defaultBranch = master로 설정 가능함
      • “master”라는 단어가 멋지고, “main”은 의미가 빈약하다고 느낌
    • 또 어떤 사람은 이름 자체엔 관심 없고, 일관성만 있으면 된다고 함
      • GitHub가 기본 브랜치를 바꾼 뒤 스크립트가 깨져서 잠시 불편했지만 지금은 해결됨
    • 한 명은 간단히 git config --global init.defaultBranch master 명령어로 이 논란을 무시할 수 있다고 조언함
  • “master”가 기본 브랜치였는데 왜 3.0에서 바뀌었는지 궁금함

    • 미국의 노예제 역사 때문이라면, 전 세계가 그 문제를 떠안는 게 이상하다고 느낌
    • 이런 식의 과도한 언어 정화가 어디까지 갈지 우려함
    • 이에 대한 답변으로, Git이 BitKeeper의 master/slave 구조에서 이름을 가져왔다는 설명이 있음
      • Git은 “slave branch” 개념을 그대로 쓰진 않았지만, 용어 유래는 남아 있었음
      • 또한 노예제는 미국만의 문제가 아니라 전 세계적 현상이었다는 의견도 제시됨
  • 나는 기본 브랜치를 develop으로 두고, 이후 release로 분기하는 방식을 선호함

    • “중앙 브랜치” 개념은 Git 구조상 맞지 않다고 느낌
    • 논쟁이 커질수록 생산적인 토론이 필요하다는 HN 가이드라인을 상기시킴
    • 누군가는 예전에 SVN에서 기본 브랜치가 trunk였다고 회상함
    • 또 다른 사람은 활성 저장소에서는 “master” 같은 마법 같은 브랜치보다 명시적인 이름이 낫다고 동의함
    • Git에는 여러 버전 관리 방식이 있으니, 한 가지가 정답은 아니라고 덧붙임
  • “man” 명령어도 비포용적이라며 회사에서 문제 삼는다는 농담이 나옴

    • 이에 “man”은 원래 성중립적 어원이라는 설명이 이어짐
    • 또 어떤 사람은 이런 논의가 맥락 인식 부족에서 비롯된다고 지적함
    • 누군가는 “hash”도 마약 연상 때문에 금지해야 하냐며 풍자함
    • “그런 아이디어 주지 말자”는 반응도 있었음
    • 반면 “비용도 안 들고 사람들을 기분 좋게 한다면 왜 반대하냐”는 온건한 의견도 있었음
  • “Scrum Master”는 왜 바뀌지 않았냐는 질문이 나옴

    • 누군가는 농담으로 “Scrum Main”이라 부르겠다고 함
    • 다른 사람은 Scrum Master는 master/slave 개념에서 유래하지 않았기 때문이라고 설명함
    • 어떤 회사는 대신 “Agile Champion”이라는 명칭을 쓴다고 함
    • 또 다른 사람은 “그럼 석사 학위(MSc)도 바꿔야 하냐”고 농담함
  • 어떤 사람은 이런 변화가 정치적 이념에 굴복한 행위라고 비판함

    • 이에 “그냥 친절하려는 시도일 수도 있다, 모든 게 전쟁은 아니다”라는 반응이 달림
  • Mercurial은 처음부터 기본 브랜치 이름이 “default”였다고 언급함

  • “master”는 Git의 분산 구조와 맞지 않는 잘못된 용어라며, 기술적으로도 바꾸는 게 옳다고 주장함

  • “가장 불관용적인 사람이 또 이겼다”며 “master”를 계속 쓰겠다는 사람도 있었음

  • 자신이 만든 프로젝트에서는 기본 브랜치를 항상 “develop”으로 두고, 이제 이 논쟁은 끝났으면 좋겠다고 함