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


242

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

git commit --allow-empty

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


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вернуться обратно к удаленному.


15

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

Commit message errata for [commit sha1]

[new commit message]

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


13
 $ git commit --allow-empty -m "Trigger Build"

2
Хотя этот код может решить вопрос, в том числе объяснение того, как и почему это решает проблему, действительно поможет улучшить качество вашего сообщения и, вероятно, приведет к большему количеству голосов. Помните, что вы отвечаете на вопрос для читателей в будущем, а не только для того, кто спрашивает сейчас. Пожалуйста, измените свой ответ, чтобы добавить объяснения и указать, какие ограничения и предположения применяются. Из обзора
двойной сигнал

-1

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

 git commit --allow-empty-message -m ''

Вы просто удалили сообщение, и это еще хуже, если коммит будет пустым, должно быть хотя бы сообщение почему.
Эрик Бишард
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.