Как мне отредактировать прошлые git коммиты, чтобы удалить мой пароль из журналов коммитов? - PullRequest
7 голосов
/ 06 декабря 2011

Моя проблема: Cygwin Git, похоже, неправильно запрашивает учетные данные при использовании https: // URL, поэтому я использовал имя пользователя и пароль в URL. К сожалению, когда я сделал "получить тягу", он автоматически отправил сообщение с полным URL-адресом, включая пароль. Я не замечал этого до тех пор, пока не сдвинул изменения.

Как мне отредактировать старые сообщения о коммитах, чтобы уничтожить пароль в URL?

Мой общий репозиторий Git находится на моем собственном сервере. При необходимости я могу сделать операцию на репо.

Инструкции о том, как изменить мою конфигурацию (т.е. не используйте Cygwin, не используйте https), не нужны - я пытаюсь разобраться с тем, что уже сделано.

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

Ответы [ 3 ]

4 голосов
/ 06 декабря 2011

Чтобы полностью удалить файл из репозитория git и его историю, используйте эти команды.

# Check out the remote repo
git clone git://host/path/repo.git
cd repo

# Clobber the file in your checkout
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch file-to-purge.txt' --prune empty --tag-name-filter cat -- --all

# Make sure you don't accidentally commit the file again
echo file-to-purge.txt >> .gitignore
git add .gitignore
git commit -m "Prevent accidentally committing this again" .gitignore

# Push the edited repo. This will break other people's clones, if any.
git push origin master --force

Для получения дополнительной информации удаление конфиденциальных данных руководство на GitHub поможет вам.

1 голос
/ 10 декабря 2011

Полезна ссылка на удаление конфиденциальных данных на git-hub. Однако я нашел инструмент, который был очень прямолинейным для использования: Эрик Рэймонд reposurgeon .

Этот инструмент позволил мне легко импортировать репо, перечислить коммиты с проблемой, отредактировать их (я сделал это индивидуально) и записать поток быстрого импорта git моего репо. Я импортировал этот поток в новое хранилище и rsync'd его на место.

Недостатком является то, что мой старый репо полностью мертв - я изменил историю. Это также относится к использованию "git filter-branch", согласно документации.

0 голосов
/ 06 декабря 2011

Если вы можете редактировать сервер, вы можете сбросить заголовок ветви на предыдущий (HEAD ^).

  • Прежде всего, получите хэш HEAD ^, к которому вы хотите «вернуться».
  • перейдите в (каталог git bare репозитория на сервере) / refs /head, перейдите в пользовательский git (или любой другой git), запустите "echo (hash)> (имя ветви)" для сброса.

вот и все.Кстати, вы не можете изменить сделанное репо до того, как вы сделали выше

...