Изменить имя автора предыдущих коммитов: ускоренные перемотки вперед отклонены - PullRequest
7 голосов
/ 28 августа 2011

Я недавно открыл репо на GitHub. Я новичок в Git. Как и в случае с новичками, я взял на себя обязательство использовать имя по умолчанию и адрес электронной почты, которые я, в лучших традициях нубов, обнаружил на пяти коммитах слишком поздно. Теперь веселье начинается, потому что я начал искать информацию о том, как изменить автора и имя коммиттера этих коммитов. Хорошо. Я в основном нашел следующую информацию и много копий:

  1. http://help.github.com/change-author-info/

  2. Удалить коммиты из ветки в Git

  3. Как удалить выбранные записи журнала коммитов из Git-репозитория при сохранении их изменений?

  4. Изменить имя автора и коммиттера, а также адрес электронной почты для нескольких коммитов в Git

  5. Изменить автора коммита за один конкретный коммит

  6. Изменить первый коммит проекта с помощью Git?

  7. Могу ли я изменить свое имя и фамилию во всех предыдущих коммитах?

Проблема, похоже, не редкость. Могу только сказать, что ни одно из решений не сработало. Половина из них - вариации одного и того же git filter-branch -f --env-filter скрипта. Я пытался работать над этим сценарием несколько раз. Проблема в том, что после применения скрипта я не могу нажать. «Перемотка вперед отклонена» или что-то в этом роде. Хорошо, единственный способ продолжить это тянуть. После вытягивания вся старая информация снова там + новая ветка с новой информацией. Я уже сижу здесь с четырьмя ветками, объединенными самыми вопиющими способами, и все они содержат одну и ту же информацию с разными именами авторов, включая ту, которую я хотел удалить.

ОК, чтобы сократить его, я также попытался удалить выбранные коммиты, которые порождают конфликты, которые я не могу разрешить (как ???), и раздавить некоторые коммиты в более новые с правильным автором. информация, которая приводит к разрушению текущего состояния проекта. Более того, иногда я получаю ошибку сегментации после выполнения git rebase -i, о котором мне сообщают здесь: http://lists -archives.org / git / 729800-rebase-i-segmentation-fault-and-another-problem .html полностью логично. Единственное, что (к счастью) работает - это git rebase --abort, что спасло мою задницу несколько раз.

Я надеюсь, что мое разочарование не отпугнет, а вместо этого развлечет вас и побудит вас помочь мне. Я хотел бы:

  • Окончательно удалить указанную информацию об авторе

  • Бонус: избавиться от всех веток, содержащих одинаковую информацию.

Но я бы тоже был рад первому, если препятствие удаления прошлых веток без разрушения текущего состояния слишком велико для новичка в git. Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 28 августа 2011

Проблема в том, что после применения скрипта я не могу нажать. «Отклонено ускоренное движение вперед» или что-то в этом роде.

Этой проблемы нельзя избежать, если вы пытаетесь изменить историю. Git отвергает толчок, потому что это приводит к потере данных; в этом случае эти данные старых авторов. Вам просто нужно git push с флагом --force, чтобы сказать, что вы уверены в том, что делаете.

Месс в Git может быть болью, чтобы решить. Если master беспорядок, я обычно просто возвращаюсь в историю с git checkout HEAD~, пока не вернусь к тому времени, когда все не было ужасно. Затем я git branch --force master, чтобы сбросить master до этой точки. Наконец, я удаляю все беспорядочные ветви с помощью git branch -D badBranch.

Будь осторожен.

1 голос
/ 29 августа 2011

Если никто не следит за вашим репо, просто измените локальное репо и принудительно отправьте GitHub.Примите любое смущение.Я строил репо в течение нескольких недель в том же духе.

Сложнее, если это студенческий проект, и лектор уже его реализовал - просто чтобы вы оценили ценность хорошего администратора;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...