developer tip

git에서 빈 프로젝트에 분기 만들기

optionbox 2021. 1. 7. 07:52
반응형

git에서 빈 프로젝트에 분기 만들기


새 프로젝트를 위해 3 개의 다른 파일 (fileA, fileB, fileC)에 3 개의 다른 기능을 구현하려고한다고 가정 해 보겠습니다.

나는 내 (현재 비어있는) 프로젝트를 git에 추가해야한다고 생각했습니다.

git init

그런 다음 3 개의 다른 분기를 만듭니다.

git branch file1_branch
git branch file2_branch
git branch file3_branch

그러나 이것은 작동하지 않습니다.

치명적 : 유효한 개체 이름이 아닙니다 : 'master'.

왜 이런거야?

이 시점에서 마스터 브랜치조차 생성되지 않았다는 문제가 관련되었을 수 있습니까? 나는 git branch. 아무것도 산출하지 못했습니다.

그런 다음 git에게 master브랜치 를 만들도록 "빈"커밋을 수행하는 것에 대해 생각했습니다 .

git commit -m `initial_commit`

하지만 스테이징 영역에 파일을 추가하지 않았기 때문에 작동하지 않습니다.

이제 막 프로젝트를 시작하려고하므로이 시점에서 커밋에 추가 할 파일이 없습니다!

이 문제를 해결하는 방법? 내가 뭘 잘못하고 있니?

감사


Git은 분기를 해당 분기의 최신 커밋에 대한 포인터로 나타냅니다. 아직 커밋을 생성하지 않았다면 해당 분기가 가리킬 것이 없습니다. 따라서 적어도 하나의 커밋을 가질 때까지 실제로 분기를 만들 수 없습니다.

Git은 커밋을 하나 이상의 부모 커밋 (또는 이것이 초기 커밋 인 경우 모두 0 인 부모), 커밋 메시지 및 기타 메타 데이터, 트리 참조에 대한 참조로 나타냅니다. 트리는 기본적으로 각 디렉토리의 각 파일에있는 내용의 매니페스트입니다. 디렉토리가 비어 있으면 트리에 넣을 것이 없습니다. 이제 실제로 첫 번째 커밋으로 빈 커밋을 생성 할 수 있습니다. 당신은 실행할 수 있습니다 git commit --allow-empty -m "initial commit". 그러나 그것은 실제로 Git을 사용하는 일반적인 방법이 아닙니다.

Git에서는 필요하지 않는 한 브랜치를 사용하지 않아야합니다. 분기 할 콘텐츠가있을 때까지 여러 분기를 만들 필요가 없습니다. 개발 초기에 세 가지 브랜치를 만들면 그들 사이에 공통 조상이 없습니까? 이 경우 3 개의 리포지토리를 생성하지 않는 이유는 무엇입니까? 아니면 분기가 시작될 때까지 세 가지를 모두 동기화하여 업데이트 할 예정입니까? 그것은 그들 모두를 최신 상태로 유지하기 위해 많은 추가 작업처럼 보입니다. 분기해야 할 때까지 생성을 기다려야합니다.

그러나이 워크 플로를 사용하려면 실행 git commit --allow-empty -m "initial commit"하여 빈 초기 커밋을 만들 수 있습니다 .


다음을 사용하여 빈 초기 커밋을 수행 할 수 있습니다.

git commit --allow-empty

그런 다음 원하는대로 분기를 만들 수 있습니다.

참조 URL : https://stackoverflow.com/questions/5678699/creating-branches-on-an-empty-project-in-git

반응형