Видалення файлу з Git-репозиторію без видалення його з локальної файлової системи

Мій початковий комміт містив деякі файли журналів. Я додав *log до свого .gitignore, і тепер я хочу видалити файли журналів зі свого сховища.

git rm mylogfile.log

видалить файл зі сховища, але також видалить його з локальної файлової системи.

Як я можу видалити цей файл зі сховища без видалення моєї локальної копії файлу?

Рішення

З досьє:

Коли задано --cached, поетапний вміст повинен збігатися або з кінчиком гілки, або з файлом на диску, що дозволяє видалити файл лише з індексу.

Отже, для одного файлу:

git rm --cached mylogfile.log

і для одного каталогу:

git rm --cached -r mydirectory
Коментарі (8)

Щоб видалити цілу папку з репозиторію (наприклад, файли Resharper), зробіть так:

git rm -r --cached folderName

Я зафіксував деякі файли resharper і не хотів, щоб вони зберігалися для інших користувачів проекту.

Коментарі (1)

Крім того, якщо ви зафіксували конфіденційні дані (наприклад, файл, що містить паролі), вам слід повністю видалити їх з історії сховища. Ось інструкція, яка пояснює, як це зробити: http://help.github.com/remove-sensitive-data/

Коментарі (2)