Створіть порожню гілку на GitHub


132

Я хочу створити нову гілку GitHub, яка називається release.

Ця гілка повинна бути порожньою ! Однак існує існуюча гілка з комітами x, і я не хочу мати її історію комітів.

Єдиний метод, який я знайшов, - це створення локальної --orphan гілки.



1
Чому ви хочете це зробити? Ви можете назвати порожній набір "Фред", але це все ще порожній набір.
msw

Якщо ви розкажете нам більше про те, чому ви хочете це зробити, це може допомогти нам знайти добрі відповіді.
willoller

Все, що ви зробите за допомогою git, буде локальним, доки ви не перекинете його на сервер GitHub git push origin _branch_.
Джо

Відповіді:


276

Що поганого в --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 не відображає жодної різниці у файлі, коли я намагаюся створити pull-request з іншої гілки. Підкажіть, як це вирішити.
Рагхавендра S

@RaghavendraS Дивіться мою відповідь. У мене була та сама проблема.
Грег М. Кршак,

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

Натомість вам слід віддати перевагу створенню нової гілки з першого коміту master. Якщо коміт не порожній, ви можете додати порожній коміт перед першим, як пояснив @houtanb.


5

Ви також можете слідувати інструкціям тут, щоб створити порожній коміт у корені вашої masterгілки. Тоді просто створіть свою releaseгілку там, де знаходиться цей порожній кореневий коміт.


3

Прийнята відповідь призвела мене до деяких проблем , тому я зробив це:

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

І отримав те, що я хотів, без проблем злиття / витягування запитів. Мені просто довелося вибрати базовий коміт, щоб створити мою другу гілку .


Якщо ваша гілка має базовий коміт, за визначенням, це не порожня гілка. Які проблеми виникли у вас під час створення гілки-сироти?
C. Augusto Proiete
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.