Git: редактировать предыдущие коммиты «Сообщения только

Я думаю, это сделает то, что вы просили

#!/usr/bin/env bash

# --> get file contents and convert them to an array
readarray thearray < ips.info

# --> Iterate the array and do interactive editing

for item in ${!thearray[@]}; do
    echo "Line number: "$item
    echo "line contents: "${thearray[$item]}
    echo -n "Change this line? (y/n)"
    read Useranswer
    if [ $Useranswer = y ]; then
        echo -n "Please type any string:"
        read Firststring
        # insert new value into array
        thearray[$item]=$Firststring
    elif [ $Useranswer = n ]; then
        # not sure what to write here to resume 
        :
    fi
done
declare -p thearray
echo "Everything done!"
12
05.12.2018, 13:48
2 ответа

Чтобы отредактировать сообщения фиксации серии коммитов, я запускаю

git rebase -i firstsha

, где firstsha— идентификатор родительского коммита первого коммита, который я хочу отредактировать. (Вы можете использовать здесь любую допустимую ссылку, поэтому git rebase -i HEAD~4покажет последние четыре коммита.)

В открывшемся редакторе измените все записи «выбрать» на «перефразировать» для коммитов, которые вы хотите изменить, затем закройте редактор; затем вам будет предложено ввести сообщения фиксации для всех выбранных вами коммитов.

Обратите внимание, что это изменит дерево коммитов, потому что хэши коммитов изменятся. Вам придется принудительно -подтолкнуть ваше новое дерево или подтолкнуть его к новой ветке. Будьте осторожны при перемещении слияний; вам нужно будет использовать-r(--rebase-merges)и прочитать раздел «Перебазирование слияний» на справочной странице git rebase.

Чтобы быстро отредактировать только последний коммит, запустите

git commit --amend

(но остерегайтесь всего, что уже подготовлено для фиксации ).

21
27.01.2020, 19:54

То, что вы ищете, этоgit rebase.

Если вы хотите изменить только предыдущее сообщение git commit, вам нужно использовать только следующее:

git commit --amend

И внесите нужные изменения в предыдущий коммит, а затем сохраните изменения.

Однако, если вам нужно изменить старые коммиты, вам нужно использовать rebase.

git rebase -i HEAD~N 

где N равно количеству коммитов, к которым вы хотите вернуться, например, 2, 12 или 6 и т. д. и т. д.

Здесь вы должны получить текстовый редактор с вашими коммитами. Измените параметр с pickна reword, чтобы изменить сообщение.

После того, как вы определили все коммиты, которые хотите изменить, и соответствующим образом изменили их параметры, сохраните и закройте редактор. Затем внесите изменения в каждое сообщение коммита. Как только вы будете удовлетворены, вы можете запустить:

git push --force

И вы должны были сохранить свою историю git, хотя и с другими значениями хеш-функции, потому что вы внесли необходимые изменения, которые хотели. Вот несколько дополнительных ссылок, которые вы должны проверить:

7.6 Инструменты Git -Перезапись истории
Справка GitHub -Изменение сообщения фиксации
StackOverflow -Вопрос об изменении старых сообщений фиксации

6
27.01.2020, 19:54

Теги

Похожие вопросы