git: автоматическое исправление строки
Я недавно узнал о git commit --fixup
который помечает ваш коммит как исправление предыдущего коммита и автоматически размещает их рядом друг с другом во время интерактивного перебазирования.
Как я могу сделать это автоматически и отдельно для нескольких строк?
Возьмите следующий пример. Моя история git выглядит так:
c5069d5 This commit adds method a() to file A.cpp
ac5db87 This commit does something in file B.cpp
733e2ff This commit adds method b() to file A.cpp
ac5db87 This commit does something else in file B.cpp
И в моем рабочем дереве я изменил некоторые строки в методе a()
файла A.cpp и b()
(и, возможно, я добавил метод c()
). Обратите внимание, что здесь я говорю только о функциях, облегчающих общение - конечно, git не знает языка программирования.
Можно ли автоматически сгенерировать две отдельные фиксации исправления из моих двух отдельных изменений в рабочем дереве, а именно:
c5069d5 Этот коммит добавляет метод a() в файл A.cpp Исправление a5559d5! Этот коммит добавляет метод a() в файл A.cpp ac5db87 Этот коммит что-то делает в файле B.cpp 733e2ff Этот коммит добавляет метод b() в файл A.cpp Исправление a53aad5! Этот коммит добавляет метод b() в файл A.cpp ac5db87 Этот коммит делает что-то еще в файле B.cpp
(и теперь рабочее дерево содержит изменения в A.cpp, которые добавили c()
Было бы здорово, если бы это работало с несколькими файлами в рабочем дереве (и не только с одним A.cpp, как в этом примере)
Обновление, альтернативная формулировка:
Git-Blame показывает мне последний коммит для каждой строки. Если я сейчас изменю строку, я хочу исправить фиксацию, которую git-blame ранее показывал мне для этой строки.
0 ответов
Как было предложено в ответе jberrymann, https://github.com/keis/git-fixup делает именно это. Используя командуgit fixup -c
предлагает вам список возможных целей исправления