Есть ли способ группировать коммиты в Git?

Есть ли способ группировать коммиты в Git?? У меня была история создания пользователя. Я создал файл за файлом и зафиксировал каждый файл отдельно. И отправил его в репозиторий github. Теперь я хочу сгруппировать все предыдущие коммиты, скажем, под меткой «Создание пользователя», чтобы я мог ссылаться на них всех вместе.

Я не хочу сопоставлять, поэтому сквош не работает.

Этот вопрос SO имеет аналогичные требования, но при именовании коммитов ОП использовал @some_label. Я тоже не использовал такую ​​этикетку.

Есть какой-либо способ сделать это. Если да, то как?

Следуйте моему ответу здесь на аналогичную проблему stackoverflow.com/questions/31668794/   —  person inquisitive    schedule 03.09.2015

Тот самый процесс, который вы хотите осуществить, это раздавливание. Даже в интерактивной перебазировке это все еще сжимает коммиты вместе. Почему ты этого не хочешь?   —  person inquisitive    schedule 03.09.2015

вы неправильно поняли мой вопрос. Я хочу, чтобы предыдущие коммиты все еще были там, но просто сгруппировали их.   —  person inquisitive    schedule 03.09.2015

Раздавливание @Makoto заменяет несколько коммитов одним коммитом. Это отличается от желания ссылаться на набор отдельных коммитов.   —  person inquisitive    schedule 03.09.2015

@Caleb: Да, это другое. Я отзову это голосование за обман, поскольку похоже, что они этого не хотят.   —  person inquisitive    schedule 03.09.2015

Единственные метки, которые вы можете добавлять к коммитам, — это теги. Вы можете пометить каждую фиксацию и использовать общий префикс для каждой группы коммитов. Но это не очень практично.   —  person inquisitive    schedule 03.09.2015

@Inquisitive Как вы планируете использовать эти группы? Например, вам нужно иметь возможность выбирать только коммиты в группе? Или вам нужно только иметь возможность говорить об определенных наборах коммитов? Обычно сквоширование является правильным ответом, если у вас есть набор коммитов, необходимых для данной функции, и если вам нужны какие-то дополнительные возможности, возможно, вы могли бы объяснить, почему. Например, почему ваши коммиты создания пользователей должны существовать отдельно?   —  person inquisitive    schedule 03.09.2015

См. также:  Отменить доступ к одной из многих баз данных в MySQL

Это одно из таких заданий, когда наши коммиты и сообщения коммитов также будут прочитаны и оценены нашими учителями. Так что мне все еще нужны старые сообщения. Я хочу сгруппировать их для ясности, что я закончил с одной историей, и мы получим много таких историй. и мне было просто любопытно, существуют ли такие вещи в git.   —  person inquisitive    schedule 03.09.2015

@Caleb Это полезно для подробных итерационных коммитов, которые можно легко разбить на части git для поиска регрессий, но в то же время иметь организованную историю git, которую было бы относительно легко просматривать.   —  person inquisitive    schedule 04.07.2021

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. inquisitive

    Создайте свои коммиты в ветке и объедините ветку обратно в мастер, используя --no-ff.

    Чтобы сделать это задним числом, предполагая, что у вас больше нет коммитов после фиксации создания пользователя:

    1. Создайте ветку (git branch user-creation) для последнего коммита.
    2. Переместите основную ветку (которую, как я предполагаю, вы уже проверили) обратно на последнюю фиксацию перед фиксацией пользовательского создания (git reset --hard OLD-COMMIT-SHA).
    3. Объедините ветку user-creation в ветвь master (git merge --no-ff user-creation).

    Это хороший подход, но я уже отправлял коммиты. Без создания ветки. person inquisitive; 03.09.2015

    Я также писал ответ, предлагающий это, поэтому отказался от него. Если вы уже отправили коммиты и можете переписать историю, просто исправьте это и нажмите -f person inquisitive; 03.09.2015

    Я добавил инструкции по созданию и объединению ветки задним числом. person inquisitive; 03.09.2015

    Действительно, git mrege --no-ff на данный момент является лучшим решением этой проблемы, также см. git-merge-no-ff» title=»в чем разница между git merge и git merge no ff»> stackoverflow.com/questions/9069061/ person inquisitive; 04.07.2021

  2. inquisitive

    Если вы не хотите раздавливать, просто выполните перебазирование и измените коммиты, добавив «@fancy_label», затем следуйте инструкциям в вашем ссылка:

    Вы можете использовать хуки post-commit в своем репозитории для достижения этого эффекта. Кратко:

    1. Вы совершаете коммит с сообщением, содержащим специальную метку (пример: @fancy_label)
    2. post-commit ловушка анализирует ваше сообщение коммита и обнаруживает этот @fancy_label (и другие ярлыки)
    3. post-commit после этого добавляет этот коммит в список коммитов для каждой метки и сохраняет его в постоянном хранилище (в простые файлы или даже в базу данных)

    Это постоянное хранилище может быть личным (нефиксируемым в папке .git) или фиксируемым (включено в проект).

    И вам нужно сделать псевдонимы git, чтобы упростить поиск и перечисление этих коммитов по их соответствующим меткам.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: