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.
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.
git push origin _branch_
.
Odpowiedzi:
Co jest nie tak z tą --orphan
opcją? 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
git add .
kroku po usunięciu wszystkich plików, a przed zatwierdzeniem?
--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.
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łąź .