Нажатие пустых коммитов на удаленный

242

Я выдвинул один коммит на удаленный, но теперь я понял, что сообщение о коммите неверно. Я хотел бы изменить сообщение коммита, но AFAIK это невозможно. Поэтому я решил создать пустой коммит с правильным сообщением:

git commit --allow-empty

Есть ли какие-либо недостатки / последствия использования пустых коммитов? Есть ли проблема, с которой я мог бы столкнуться в будущем из-за этого пустого коммита?

mrutyunjay
источник
1
Проверьте этот похожий вопрос stackoverflow.com/questions/6218199/…
Montaro

Ответы:

80

Вы не столкнетесь с какими-либо ужасными последствиями, просто история будет выглядеть немного запутанно.

Вы можете изменить сообщение коммита, выполнив

git commit --amend
git push --force-with-lease # (as opposed to --force, it doesn't overwrite others' work)

НО это переопределит удаленную историю с вашей, что означает, что если кто-то потянет этот репо за это время, этот человек будет очень зол на вас ...

Просто сделайте это, если вы единственный человек, имеющий доступ к репо.

Габриэле Петронелла
источник
5
Да, именно поэтому я предпочел
толкнуть
4
@mrutyunjay, если есть шанс, что другие люди сняли репо, тогда да, я думаю, что это более хороший вариант.
Габриэле Петронелла
1
Вы не столкнетесь с какими-либо ужасными последствиями, просто история будет выглядеть немного запутанно - какое ужасное последствие! ;-)
Алоис Махдал
3
Предпочитают --force-with-leaseне терять работу коллаборационистов.
Кензо
22

нажатие коммитов, независимо от того, пусто это или нет, приводит к запуску возможных git-хуков. Это может ничего не делать или иметь потрясающие последствия.

исключающее
источник
9
Это недооцененное наблюдение. Да, пустые коммиты могут превосходить внесение изменений в push-коммиты, но нельзя предполагать, что они свободны от побочных эффектов, если могут быть зацепки.
wintermute92
18

Есть ли какие-либо недостатки / последствия нажатия пустых коммитов?

Помимо крайнего замешательства, кто-то может понять, почему в мастер-классе есть куча коммитов без содержания, не совсем.

Вы можете изменить коммит, который вы выдвинули на удаленный, но sha1 коммита (в основном это номер id) изменится навсегда, что изменит исходное дерево - тогда вам придется git push -fвернуться обратно к удаленному.

yamafontes
источник
15

Пока вы четко ссылаетесь на другой коммит из пустого коммита, все будет хорошо. Что-то вроде:

Commit message errata for [commit sha1]

[new commit message]

Как уже отмечали другие, это часто предпочтительнее, чем принудительное нажатие исправленного коммита.

153957
источник
13
 $ git commit --allow-empty -m "Trigger Build"
sarjit07
источник
2
Хотя этот код может решить вопрос, в том числе объяснение того, как и почему это решает проблему, действительно поможет улучшить качество вашего сообщения и, вероятно, приведет к большему количеству голосов. Помните, что вы отвечаете на вопрос для читателей в будущем, а не только для того, кто спрашивает сейчас. Пожалуйста, измените свой ответ, чтобы добавить объяснения и указать, какие ограничения и предположения применяются. Из обзора
двойной сигнал
-1

Как насчет этого;

 git commit --allow-empty-message -m ''
Дэвид Окви
источник
Вы просто удалили сообщение, и это еще хуже, если коммит будет пустым, должно быть хотя бы сообщение почему.
Эрик Бишард