Как отредактировать прошлые коммиты git, чтобы удалить пароль из журналов фиксации?
моя проблема: cygwin git, похоже, неправильно запрашивает учетные данные при использовании HTTPS: / / url, поэтому я использовал имя пользователя и пароль в URL. К сожалению, когда я сделал "get pull", он автоматически отправил сообщение с полным URL-адресом, включая пароль. Я заметил это только после того, как внес изменения.
Как редактировать старые сообщения фиксации, чтобы уничтожить пароль в URL?
мой общий репозиторий git находится на моем собственном сервере. Я могу сделать операцию на РЕПО, если необходимый.
Инструкции о том, как изменить мою конфигурацию (т. е. не использовать Cygwin, не использовать https), не нужны-я пытаюсь справиться с тем, что уже сделано.
Да, я могу и буду записывать пароль, но я все равно хотел бы его исправить.
3 ответов
чтобы полностью удалить файл из репозитория 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 поможет вам.
ссылка на удаление конфиденциальных данных на Git-hub полезна. Тем не менее, я нашел инструмент, который был очень straight-foward для использования: Eric Raymond reposurgeon.
этот инструмент позволил мне легко импортировать мое РЕПО, перечислить коммиты с проблемой, отредактировать их (я сделал это индивидуально) и написать поток быстрого импорта git моего РЕПО. Я импортировал этот поток в новый РЕПО и rsync бы его на место.
недостатком является то, что мое старое РЕПО полностью мертв - я изменил историю. Это было бы верно и для использования "Git filter-branch", согласно документам.
Если вы можете редактировать сервер, вы можете сбросить головку ветви на предыдущую (HEAD^).
- прежде всего, получите хэш HEAD^, к которому вы хотите "вернуться".
- перейдите в (каталог git bare repository на сервере) / refs / heads, измените на user git (или любой git служит), запустите "echo (hash) > (имя филиала)" для сброса.
вот и все. Кстати, вы не можете изменить РЕПО, вытащенное до того, как вы сделали выше