Я пытаюсь раздавить 2 коммита и удалить часть слияния, но у меня есть некоторые проблемы.
У меня есть ветка main и featureBranch. В моем терминале я делаю:
git checkout main
git merge --squash featureBranch
git push
Но на самом деле ничего не происходит. Я нахожусь в папке проекта, я вытаскивал и извлекал, поэтому у меня есть все необходимые данные. Как это сделать. (VCS - это битбакет, хотя это не должно быть важно)
PS. Я хочу сделать сквош без использования интерактивной опции перебазирования (это намного сложнее, по крайней мере, на мой взгляд)
Вы хотите объединить коммиты ветки или сквоша?
Я хочу объединить свою featureBranch с основной веткой. Я хочу выполнить сквош на нем, поэтому вместо двух коммитов, которые я сделал, в истории git он имеет только 1. Также я хотел бы, чтобы в истории git часть «слияния» не была видна (все это должно быть раздавлено)
Сделайте себе одолжение и начните учиться использовать интерактивную перебазировку. Без него вы упускаете столько git. Это действительно важная, необязательная часть git.
@hlovdal хорошо, я думаю, ты прав, все это говорят. Завтра потрачу время и изучу. Ребята спасибо за комментарии
Если вы уже натолкнулись на ориджин, вам придется переписать историю с силой. Если вы хотите раздавить коммиты перед нажатием, вы можете сделать
git rebase -i HEAD~<num-commits-to-squash-from-head>
На интерактивной странице оставьте «p» для выбора коммита, который вы хотите раздавить, и замените команду «для отдыха» на «s». После сохранения этого git позволит вам отредактировать сообщение коммита для раздавленного коммита.
да, но это делает сквош с интерактивной перебазировкой, не так ли? Я не хочу этого делать. Я хочу раздавить его без интерактивной перебазировки. Можно, право
Вы можете сделать git rebase featureBranch
это все равно оставит вас с двумя фиксациями из ветки функций, но без «слияния фиксации». git pull --squash featureBranch
будет публиковать коммиты из ветки функций, которые вы затем можете зафиксировать поверх основной, а затем нажать
да, но если бы у меня, например, было 10 коммитов, rebase идет один за другим и применяет его, правильно. Это может занять много времени. Я программирую в Android (Android Studio), и у меня всегда были головные боли от rebase bcs этого. Со слиянием все происходит намного быстрее и плавнее. Вот почему я хотел избежать интерактивной перебазировки или перебазирования вообще.
Вместо подсчета коммитов используйте git rebase -i $(git merge-base main featureBranch)
Хорошо, мне, очевидно, нужно сделать интерактивную перебазировку, все предлагают это. @Kilbo Я приму ответ, спасибо за усилия
Что именно означает «ничего не происходит»? Что вы ожидали, и как вы определили, что этого не произошло?