GitHub에서 빈 분기 만들기


132

라는 새 GitHub 브랜치를 만들고 싶습니다 release.

이 분기 는 비어 있어야합니다 ! 그러나 x 커밋이있는 기존 브랜치가 있으며 커밋 기록을 갖고 싶지 않습니다.

내가 찾은 유일한 방법은 로컬 --orphan 브랜치 를 만드는 것 입니다.



1
왜 이렇게 하시겠습니까? 빈 집합을 "Fred"라고 부를 수 있지만 여전히 빈 집합입니다.
msw

이 작업을 원하는 이유 에 대해 자세히 알려 주시면 좋은 답변을 찾는 데 도움이 될 수 있습니다.
willoller

git 을 사용하여 업스트림을 GitHub 서버로 푸시 할 때까지 git로 만들 모든 것은 로컬에 있습니다 git push origin _branch_.
Joe

답변:


277

--orphan옵션에 어떤 문제가 있습니까? 비어 있고 역사가없는 가지를 원한다면 이것이 갈 길입니다.

git checkout --orphan empty-branch

그런 다음 준비 영역에있는 모든 파일을 제거 할 수 있습니다 (커밋되지 않도록).

git rm -rf .

이 시점에서 컴퓨터에 빈 분기가 있습니다.

GitHub (또는 다른 Git 리포지토리)로 푸시하려면 빈 브랜치를 푸시 할 수 없으므로 콘텐츠가없는 경우에도 (예 : 빈 커밋) 적어도 하나의 커밋이 필요합니다.

git commit --allow-empty -m "root commit"

마지막으로 리모컨으로 밀고 맥주를 열어

git push origin empty-branch

3
안녕하세요, 빈 지점을 만든 후 다른 지점에서 풀 요청을 만들려고 할 때 github 저장소에 파일 차이가 표시되지 않습니다. 이 문제를 해결하는 방법을 알려주세요.
Raghavendra S

@RaghavendraS 내 대답을 참조하십시오. 나는 같은 문제가 있었다.
Greg M. Krsak

2
아마도 일부 사람들은 git add .모든 파일을 제거한 후 커밋하기 전에 단계 가 없기 때문에이 수락 된 답변에 문제가 있습니까?
SCoyle

나는 맥주를 즐겼다
El Ronnoco

13

--orphan 빈 브랜치를 로컬로 생성하는 데는 좋지만 푸시하거나 다른 브랜치와 상호 작용하려면 커밋이 필요합니다.

고아 브랜치에 새 커밋을 만드는 것은 다른 브랜치와 상호 작용할 수 없기 때문에 좋은 생각이 아닙니다. 즉

git checkout --orphan test
git commit --allow-empty -m "init test branch"
git merge master
fatal: refusing to merge unrelated histories

대신 마스터의 첫 번째 커밋에서 새 브랜치를 만드는 것이 좋습니다. 커밋이 비어 있지 않으면 @houtanb의 설명대로 첫 번째 커밋 앞에 빈 커밋을 추가 할 수 있습니다.


5

여기 지침 에 따라 master브랜치 루트에 빈 커밋을 만들 수도 있습니다 . 그런 다음 release빈 루트 커밋이있는 지점을 만듭니다 .


3

받아 들여진 대답으로 인해 몇 가지 문제가 발생 했기 때문에 다음과 같이했습니다.

$ git branch
* staging
$ git branch master c74d99cf46f6ed23e742f2617e9908294b4a608b
$ git checkout master
Switched to branch 'master'

그리고 내가 원하는 것을 얻었고 병합 / 풀 요청 문제를 얻었습니다. 난 그냥 내 두 번째 지점을 만들 것을 약속 기지를 골라야 에서.


브랜치에 기본 커밋이있는 경우 정의에 따라 브랜치 가 아닙니다 . 고아 분기를 만들 때 어떤 문제가 있었습니까?
C. Augusto Proiete
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.