Не удается найти .gitconfig в старых Git-коммитах

StackOverflow https://stackoverflow.com/questions/1053994

  •  20-08-2019
  •  | 
  •  

Вопрос

Минуту назад я заметил , что мой .gitconfig .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

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

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

Это было полезно?

Решение

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

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

что намного быстрее.Эта команда описана в разделе ПРИМЕРА справочной страницы.

Другие советы

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

Сбросьте все ewvisions в репозитории до глобальных значений по умолчанию (.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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top