Как использовать «git merge --squash», предотвращая регулярные коммиты с использованием git hooks - PullRequest
0 голосов
/ 19 ноября 2018

Я бы хотел запретить фиксацию коммитов с использованием локальной ловушки фиксации в соответствии с ответом на https://stackoverflow.com/a/40465455/329496

Это прекрасно работает, так как теперь я могу объединять изменения в ветвях объектов в master:

git merge feature_branch

Я на самом деле хочу использовать сквош-слияния, чтобы законченные объекты попадали как один коммит на мастера:

git merge --squash feature_branch

На самом деле это не слияниеэто создает сжатые изменения как измененные файлы в моем индексе.Затем мне нужно зафиксировать эти изменения индекса, но я отключил коммиты для мастера.

Есть ли способ предотвратить фиксацию коммитов, а также обеспечить автоматическое сжатие работы, объединенной из ветвей объектов?

1 Ответ

0 голосов
/ 20 ноября 2018

В этой ситуации Git не знает разницы между коммитом на master того типа, который вы хотите (сквош слияния) и тем, который вам не нужен (все остальное). На самом деле не существует способа сделать это с простым Git, хотя различные хостинговые платформы (например, GitHub и GitLab) предлагают это в качестве опции для запросов извлечения.

Однако, есть обходной путь. Вы можете создать еще одну ветвь (скажем, master-merge), запустив git checkout -B master-merge master и выполнить там сквош, а затем перемотать вперед до master, используя git merge --ff-only master-merge, находясь на master. Тогда никакие фактические коммиты не выполняются на master, только быстрые форварды.

...