github: как бы вы удалили все коммиты под определенным именем пользователя? - PullRequest
14 голосов
/ 09 ноября 2011

Когда я только начинал с этим репо, я раньше не использовал git и пытался изменить настройки, набирая опечатки в моей электронной почте или что-то в этом роде, поэтому все коммиты некоторое время делались пользователем «неизвестно».Я нашел ответ здесь, чтобы преобразовать все «неизвестные» коммиты в мое имя, но на самом деле он дублировал коммит и применил мое имя.Так что теперь у меня разбросаны все эти «неизвестные» пользовательские коммиты.

Поэтому мне было интересно узнать, какие команды нужно запустить для удаления всех коммитов «неизвестным» пользователем.

1 Ответ

16 голосов
/ 09 ноября 2011

Вам нужно будет использовать git filter-branch (в вашем репо) и принудительно нажать на github.

Пример из руководства, в котором рассматривается почти та же ситуация, когда вы хотите удалить коммиты от конкретного пользователя:

git filter-branch --commit-filter '
    if [ "$GIT_AUTHOR_NAME" = "Darl McBribe" ];
    then
            skip_commit "$@";
    else
            git commit-tree "$@";
    fi' HEAD

Обратите внимание, что это перезапишет вашу историю и может повлиять на других, кто также использует ваше хранилище. Советы Github по соавторам:

Работа с соавторами

У вас могут быть соавторы, которые извлекли вашу испорченную ветку и создали свои собственные ветки.После того, как они получат вашу новую ветку, им нужно будет использовать git rebase в своих собственных ветках, чтобы перебазировать их поверх новой.Коллаб должен также гарантировать, что их ветвь не вводит файл заново, так как это заменит файл .gitignore.Убедитесь, что ваш коллаб использует rebase, а не merge, иначе он просто заново представит файл и всю испорченную историю… и, вероятно, столкнется с некоторыми конфликтами слияния.

http://help.github.com/remove-sensitive-data/

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