Невозможно найти .gitconfig в старых коммитах Git - PullRequest
1 голос
/ 28 июня 2009

Я заметил минуту назад, что мой .gitconfig -файл был публичным в моем репо. Он содержит мои секретные токены.

Я git-add -u файл и зафиксирован. Я не уверен, удаляет ли эта команда файл из предыдущих коммитов.

Я хочу быть уверенным и искать файл в моих предыдущих коммитах так, чтобы в моей истории такого файла не было.

Как искать файл в предыдущих коммитах?


Я бегу

git filter-branch --tree-filter 'rm .gitconfig' master     # Thanks to Greg!

Я получаю

Rewrite 84dabfa2ea195ce9aad0309216858b302150017c (1/25)rm: .gitconfig: No such file or directory
tree filter failed: rm .gitconfig

Сообщение об ошибке подсказывает мне, что у меня нет файла в моей истории коммитов.

Есть ли способ поиска файла в моей истории фиксации , чтобы мне не нужно было запускать удаление, чтобы увидеть, что у меня нет файла в моей истории фиксации?

Ответы [ 3 ]

4 голосов
/ 28 июня 2009

Краткий ответ:

git filter-branch --tree-filter 'rm -f .gitconfig' master   

Обратите внимание на -f.

Длинный ответ:

rm вернет ненулевой код возврата, если файл не существует. filter-branch думаю, что это ошибка и остановите переписывание. Добавление -f Избегайте этого.

Примечание:

Существует альтернативная команда:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch .gitconfig' master

что НАМНОГО быстрее. Эта команда описана в разделе «Пример» справочной страницы.

4 голосов
/ 28 июня 2009

Чтобы удалить файл из всей прошлой истории Git, вам нужно будет переписать все предыдущие коммиты, используя что-то вроде git filter-branch. Тем не менее, это сделает ваше новое дерево слитным со всеми прошлыми деревьями, так что делайте это осторожно.

1 голос
/ 13 апреля 2011

Сброс всех ewvision в репозитории к глобальным значениям по умолчанию (.gitconfig).

git filter-branch -f --commit-filter 'GIT_COMMITTER_NAME="`git config --get user.name`";GIT_AUTHOR_NAME="`git config --get user.name`";GIT_COMMITTER_EMAIL="git config --get user.email";GIT_AUTHOR_EMAIL="`git config --get user.email`";git commit-tree "$@";' HEAD
...