Створіть порожню гілку на 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.