Utwórz pustą gałąź na GitHub

132

Chcę utworzyć nową gałąź GitHub o nazwie release.

Ta gałąź musi być pusta ! Jednak istnieje gałąź z x zatwierdzeniami i nie chcę mieć jej historii zmian.

Jedyną metodą, jaką znalazłem, jest utworzenie lokalnego --orphan oddziału.

Sebastian Schneider
źródło
1
Dlaczego chcesz to zrobić? Możesz nazwać pusty zestaw „Fred”, ale nadal jest to pusty zestaw.
msw
Jeśli powiesz nam więcej o tym, dlaczego chcesz to zrobić, może nam to pomóc w znalezieniu dobrych odpowiedzi.
willoller
Wszystko, co zrobisz za pomocą git, będzie lokalne, dopóki nie wyślesz go do serwera GitHub za pomocą git push origin _branch_.
Joe

Odpowiedzi:

276

Co jest nie tak z tą --orphanopcją? Jeśli chcesz mieć gałąź, która jest pusta i nie ma historii, to jest droga do zrobienia ...

git checkout --orphan empty-branch

Następnie możesz usunąć wszystkie pliki, które będziesz mieć w obszarze przejściowym (aby nie zostały zatwierdzone):

git rm -rf .

W tym momencie masz pustą gałąź na swoim komputerze.

Zanim będziesz mógł wypchnąć do GitHub (lub dowolnego innego repozytorium Git), będziesz potrzebować co najmniej jednego zatwierdzenia, nawet jeśli nie zawiera on żadnej treści (tj. Pustego zatwierdzenia), ponieważ nie możesz przesłać pustej gałęzi

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

Na koniec popchnij go do pilota i otwórz piwo

git push origin empty-branch
C. Augusto Proiete
źródło
3
Cześć, po utworzeniu repozytorium github z pustą gałęzią nie pokazuje żadnej różnicy w plikach, gdy próbuję utworzyć żądanie ściągnięcia z innej gałęzi. Czy możesz mi powiedzieć, jak rozwiązać ten problem.
Raghavendra S
@RaghavendraS Zobacz moją odpowiedź. Miałem ten sam problem.
Greg M. Krsak
2
Być może niektórzy mają problem z tą zaakceptowaną odpowiedzią, ponieważ brakuje git add .kroku po usunięciu wszystkich plików, a przed zatwierdzeniem?
SCoyle
Podobało mi się piwo
El Ronnoco
13

--orphan jest dobry do lokalnego tworzenia pustej gałęzi, jednak aby go wypchnąć lub wchodzić w interakcję z innymi gałęziami, będziesz potrzebować zatwierdzenia.

Tworzenie nowego zatwierdzenia w gałęzi osieroconej nie jest dobrym pomysłem, ponieważ nie będzie można wchodzić w interakcje z innymi gałęziami. To znaczy

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

Zamiast tego powinieneś preferować tworzenie nowej gałęzi z pierwszego zatwierdzenia mastera. Jeśli zatwierdzenie nie jest puste, możesz dodać puste zatwierdzenie przed pierwszym, jak wyjaśniono w @houtanb.

to mój projekt
źródło
5

Możesz również postępować zgodnie z instrukcjami tutaj, aby utworzyć pusty zatwierdzenie w katalogu głównym swojej mastergałęzi. Następnie po prostu stwórz swoją releasegałąź, w której znajduje się puste zatwierdzenie roota.

houtanb
źródło
3

Przyjęta odpowiedź doprowadziła mnie do pewnych problemów , więc zrobiłem to:

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

I dostałem to, czego chciałem, bez problemów z łączeniem / żądaniami ściągania. Musiałem tylko wybrać podstawową zmianę, z której utworzę drugą gałąź .

Greg M. Krsak
źródło
Jeśli twoja gałąź ma zatwierdzenie podstawowe, z definicji nie jest to pusta gałąź. Jakie problemy napotkałeś podczas tworzenia osieroconej gałęzi?
C. Augusto Proiete