Вы можете использовать интерактивную перебазировку , чтобы сделать это.
git checkout
git rebase -i HEAD~36
Откроется редактор, в котором будут перебазированы все коммиты, а также действие, которое будет выполняться для каждого коммита, например:
pick f7f3f6d changed my name a bit
pick 310154e updated README formatting and added blame
pick a5f4a0d added cat-file
# Rebase 710f0f8..a5f4a0d onto 710f0f8
#
# 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, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
Для коммитов, которые вы хотите раздавить, измените действие. сквош (или другие действия, которые вы хотите выполнить). сохраните и закройте редактор для внесения изменений.
Зависимости за $ (ЦЕЛЬ).o могут быть несколькими объектными файлами, один для каждого исходного файла в Вашем драйвере. Много других драйверов используют + = оператор после начального объявления OBJS. Например,
OBJS = nlb-driver.o
OBJS += file1.o
OBJS += file2.o
...
Целевое правило затем расширилось бы, чтобы быть
$(TARGET).o: nlb-driver.o file1.o file2.o
$(LD) $(LD_RFLAG) -r -o $@ $(OBJS)
Это хорошо, если существует больше исходных файлов, чем удобно соответствие на строке. Но если существует только небольшое количество файлов, можно также определить все объекты на одной строке
OBJS = nlb-driver.o file1.o file2.o
Я предположил бы, что просто список большего количества объектных файлов во второй строке добьется цели.