라는 새 GitHub 브랜치를 만들고 싶습니다 release
.
이 분기 는 비어 있어야합니다 ! 그러나 x 커밋이있는 기존 브랜치가 있으며 커밋 기록을 갖고 싶지 않습니다.
내가 찾은 유일한 방법은 로컬 --orphan
브랜치 를 만드는 것 입니다.
라는 새 GitHub 브랜치를 만들고 싶습니다 release
.
이 분기 는 비어 있어야합니다 ! 그러나 x 커밋이있는 기존 브랜치가 있으며 커밋 기록을 갖고 싶지 않습니다.
내가 찾은 유일한 방법은 로컬 --orphan
브랜치 를 만드는 것 입니다.
git push origin _branch_
.
답변:
--orphan
옵션에 어떤 문제가 있습니까? 비어 있고 역사가없는 가지를 원한다면 이것이 갈 길입니다.
git checkout --orphan empty-branch
그런 다음 준비 영역에있는 모든 파일을 제거 할 수 있습니다 (커밋되지 않도록).
git rm -rf .
이 시점에서 컴퓨터에 빈 분기가 있습니다.
GitHub (또는 다른 Git 리포지토리)로 푸시하려면 빈 브랜치를 푸시 할 수 없으므로 콘텐츠가없는 경우에도 (예 : 빈 커밋) 적어도 하나의 커밋이 필요합니다.
git commit --allow-empty -m "root commit"
마지막으로 리모컨으로 밀고 맥주를 열어
git push origin empty-branch
git add .
모든 파일을 제거한 후 커밋하기 전에 단계 가 없기 때문에이 수락 된 답변에 문제가 있습니까?
--orphan
빈 브랜치를 로컬로 생성하는 데는 좋지만 푸시하거나 다른 브랜치와 상호 작용하려면 커밋이 필요합니다.
고아 브랜치에 새 커밋을 만드는 것은 다른 브랜치와 상호 작용할 수 없기 때문에 좋은 생각이 아닙니다. 즉
git checkout --orphan test
git commit --allow-empty -m "init test branch"
git merge master
fatal: refusing to merge unrelated histories
대신 마스터의 첫 번째 커밋에서 새 브랜치를 만드는 것이 좋습니다. 커밋이 비어 있지 않으면 @houtanb의 설명대로 첫 번째 커밋 앞에 빈 커밋을 추가 할 수 있습니다.
받아 들여진 대답으로 인해 몇 가지 문제가 발생 했기 때문에 다음과 같이했습니다.
$ git branch
* staging
$ git branch master c74d99cf46f6ed23e742f2617e9908294b4a608b
$ git checkout master
Switched to branch 'master'
그리고 내가 원하는 것을 얻었고 병합 / 풀 요청 문제를 얻었습니다. 난 그냥 내 두 번째 지점을 만들 것을 약속 기지를 골라야 에서.