Я думаю, это сделает то, что вы просили
#!/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!"
Чтобы отредактировать сообщения фиксации серии коммитов, я запускаю
git rebase -i firstsha
, где firstsha
— идентификатор родительского коммита первого коммита, который я хочу отредактировать. (Вы можете использовать здесь любую допустимую ссылку, поэтому git rebase -i HEAD~4
покажет последние четыре коммита.)
В открывшемся редакторе измените все записи «выбрать» на «перефразировать» для коммитов, которые вы хотите изменить, затем закройте редактор; затем вам будет предложено ввести сообщения фиксации для всех выбранных вами коммитов.
Обратите внимание, что это изменит дерево коммитов, потому что хэши коммитов изменятся. Вам придется принудительно -подтолкнуть ваше новое дерево или подтолкнуть его к новой ветке. Будьте осторожны при перемещении слияний; вам нужно будет использовать-r
(--rebase-merges
)и прочитать раздел «Перебазирование слияний» на справочной странице git rebase
.
Чтобы быстро отредактировать только последний коммит, запустите
git commit --amend
(но остерегайтесь всего, что уже подготовлено для фиксации ).
То, что вы ищете, это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 -Вопрос об изменении старых сообщений фиксации