@mr_idiot

Почему продублировались все коммиты?

Хотел исправить свои ранние коммиты в репозитории, которые были с не с тем именем пользователя и почтой.
Нашел такой скрипт:

#!/bin/bash
git filter-branch --commit-filter '
        if [ "$GIT_COMMITTER_NAME" = "<старый ник>" ];
        then
                GIT_COMMITTER_NAME="<новый ник>";
                GIT_AUTHOR_NAME="<новый ник>";
                GIT_COMMITTER_EMAIL="<новая почта>";
                GIT_AUTHOR_EMAIL="<новая почта>";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD


В результате всех старых коммитов стало по два: со старым ником и новым. Можно как-нибудь исправить?
  • Вопрос задан
  • 2682 просмотра
Решения вопроса 1
@mr_idiot Автор вопроса
Покопался, и понял в чем была моя ошибка. Я запускал скрипт переименования находясь в ветке (не в master). Соотвественно, git нарисовал новую историю коммитов, а когда смерджил ветку в master, приплюсовал ее к оригинальной.
Исправить это по-простому не получится, но можно сделать следующее: откатить ветку master на коммит до слияния:

git reset --hard commit

Там история еще нормальная. Затем черри-пикнуть все нужные коммиты из функциональной ветки:

git cherry-pick commit..commit

Можно черри-пикнуть в новую ветку, а затем влить ее в master, чтобы восстановить коммит слияния.
А переписывать историю нужно из ветки master. И после этого в нее нельзя вливать старые ветки.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SergeiStartsev
@SergeiStartsev
На stackoverflow встречалась такая проблема.
Ответ написан
grossws
@grossws
Что говорит git branch -a -v?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы