Git - удалить и исключить файл конфигурации - PullRequest
8 голосов
/ 07 декабря 2009

2 недели назад я зафиксировал конфигурацию моего приложения, в котором был мой пароль, это не очень полезно. Как я могу удалить файл из истории коммитов и убедиться, что он не был повторно зафиксирован?

Я хочу удалить файл из дерева всех коммитов, поскольку он содержит мои пароли.

Ответы [ 4 ]

19 голосов
/ 07 декабря 2009

Вы можете

git rm myConfigFile
echo myConfigFile > .gitignore
git add .gitignore
git commit -m "from now on, no more myConfigFile"

Другой крайний подход (опасный, особенно если вы уже перенесли свое репо в удаленное), заключается в полном удалении этого файла из истории указанного репо:

git filter-branch --index-filter 'git update-index --remove myConfigFile' HEAD

(использовать с осторожностью и в первую очередь с резервной копией)

Вопрос Как мне удалить конфиденциальные файлы из истории git содержит больше по этой важной теме.

Проблемы с этим процессом имеют две стороны:

  1. Если ваше репо уже было клонировано, вы никогда не сможете гарантировать, что конфиденциальная информация действительно будет «ушла» из любого другого репо.
  2. Когда другие попытаются свернуть ваши последние изменения после этого, они получат сообщение о том, что изменения не могут быть применены, потому что это не ускоренная перемотка вперед.
    Чтобы это исправить, им придется либо удалить свой существующий репозиторий и повторно клонировать его, либо следовать инструкциям в разделе «RECOVERING FROM UPSTREAM REBASE» на git-rebase manpage .
    В обоих случаях ваша конфиденциальная информация не будет "тихо" заменена или стерта ...
1 голос
/ 07 декабря 2009
cp my-config config.tmp
git rm my-config
git commit -m 'removed config'
mv config.tmp my-config
echo my-config >> .gitignore
git add .gitignore
git commit -m 'ignore config'
0 голосов
/ 07 декабря 2009

Добавить имя файла в файл .gitignore.

Ссылка

0 голосов
/ 07 декабря 2009

Использовать игнорировать: http://github.com/guides/ignore-for-git

...