Я на хозяине, и я сделал rebase -i <my_branch>
Получил это:
noop
# Rebase c947bec..7e259d3 onto c947bec
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x <cmd>, exec <cmd> = Run a shell command <cmd>, and stop if it fails
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
Я бы хотел выбрать не все коммиты, так как некоторые из них не приветствуются. Также как вы работаете, если хотите, чтобы некоторые файлы или изменения всегда были «локальными» в какой-то ветке? Есть такой помощник .gitignore
?
HEAD~*
синтаксиса помогло мне, но первое - нет.rebase -i
без диапазона фиксации не будут отображаться никакие фиксации. чтобы перебазировать последние, скажем, 7 коммитов, используйте следующее:Но будьте осторожны, это переписывает историю. не делайте этого, если коммиты уже отправлены
для вашего второго вопроса: создайте ветку с вашими изменениями (в основном ветвь конфигурации) и регулярно объединяйте в нее другие ветки . таким образом изменения не переместятся в другие ветки
источник
Когда вы используете
git rebase -i
, вы обычно должны указать, с какого коммита вы хотите выполнить перебазирование. Итак, если, например, вы хотите удалить некоторые коммиты из последних 10 в текущую ветку, вы должны сделать:источник
Как уже упоминалось, вам необходимо указать диапазон фиксации.
(Предполагая, что вы находитесь в той же ветке, что и коммит, который нужно отредактировать) -
Чтобы указать коммиты, вы можете использовать сокращение HEAD ~ 5 или использовать контрольную сумму sha (которую вы можете получить
git log
)Фактически, подойдет любой коммит, если он является предшествующим / предком тех коммитов, которые вы хотите удалить / отредактировать / изменить в дереве. В нем будут перечислены все коммиты с момента
<latest-commit-to-be-retained>
в редакторе (определенном в вашей конфигурации git). Чтобы удалить фиксацию из списка, просто удалите эту конкретную строку, сохраните и выйдите (vi habbits :)) файл + редактор и выполнитеgit rebase --continue
Во втором ответе я согласен с knittl.
источник