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.



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

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.


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.


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łąź .


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.