Squash фиксирует в git и удаляет «уродливое» сообщение о слиянии

Я пытаюсь раздавить 2 коммита и удалить часть слияния, но у меня есть некоторые проблемы.

У меня есть ветка main и featureBranch. В моем терминале я делаю:

git checkout main
git merge --squash featureBranch
git push

Но на самом деле ничего не происходит. Я нахожусь в папке проекта, я вытаскивал и извлекал, поэтому у меня есть все необходимые данные. Как это сделать. (VCS - это битбакет, хотя это не должно быть важно)

PS. Я хочу сделать сквош без использования интерактивной опции перебазирования (это намного сложнее, по крайней мере, на мой взгляд)

Что именно означает «ничего не происходит»? Что вы ожидали, и как вы определили, что этого не произошло?

mkrieger1 20.01.2023 21:12

Вы хотите объединить коммиты ветки или сквоша?

Aissaoui Ahmed 20.01.2023 21:28

Я хочу объединить свою featureBranch с основной веткой. Я хочу выполнить сквош на нем, поэтому вместо двух коммитов, которые я сделал, в истории git он имеет только 1. Также я хотел бы, чтобы в истории git часть «слияния» не была видна (все это должно быть раздавлено)

Kratos 20.01.2023 21:40

Сделайте себе одолжение и начните учиться использовать интерактивную перебазировку. Без него вы упускаете столько git. Это действительно важная, необязательная часть git.

hlovdal 21.01.2023 00:30

@hlovdal хорошо, я думаю, ты прав, все это говорят. Завтра потрачу время и изучу. Ребята спасибо за комментарии

Kratos 21.01.2023 00:34
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы уже натолкнулись на ориджин, вам придется переписать историю с силой. Если вы хотите раздавить коммиты перед нажатием, вы можете сделать

git rebase -i HEAD~<num-commits-to-squash-from-head>

На интерактивной странице оставьте «p» для выбора коммита, который вы хотите раздавить, и замените команду «для отдыха» на «s». После сохранения этого git позволит вам отредактировать сообщение коммита для раздавленного коммита.

да, но это делает сквош с интерактивной перебазировкой, не так ли? Я не хочу этого делать. Я хочу раздавить его без интерактивной перебазировки. Можно, право

Kratos 20.01.2023 20:49

Вы можете сделать git rebase featureBranch это все равно оставит вас с двумя фиксациями из ветки функций, но без «слияния фиксации». git pull --squash featureBranch будет публиковать коммиты из ветки функций, которые вы затем можете зафиксировать поверх основной, а затем нажать

Kilbo 20.01.2023 21:12

да, но если бы у меня, например, было 10 коммитов, rebase идет один за другим и применяет его, правильно. Это может занять много времени. Я программирую в Android (Android Studio), и у меня всегда были головные боли от rebase bcs этого. Со слиянием все происходит намного быстрее и плавнее. Вот почему я хотел избежать интерактивной перебазировки или перебазирования вообще.

Kratos 20.01.2023 21:54

Вместо подсчета коммитов используйте git rebase -i $(git merge-base main featureBranch)

amphetamachine 20.01.2023 22:14

Хорошо, мне, очевидно, нужно сделать интерактивную перебазировку, все предлагают это. @Kilbo Я приму ответ, спасибо за усилия

Kratos 21.01.2023 00:36

Другие вопросы по теме