Видаліть існуючий файл з Git Repo


126

Я хочу, щоб git перестав відслідковувати мій журнал локального розвитку (log / development.log) у наших сховищах. Чи можливо це і як я можу це зробити?


Відповіді:


143

Просто, щоб дати повну відповідь всі відразу:

  1. від klemens: Вам потрібно додати файл у .gitignoreфайл десь над небажаним файлом у репо. тобто

    $ cd $ cat >> .gitignore development.log Cd

  2. від м. narebski: Потім потрібно видалити файл з репо, виконавши ", git rm --cached <file>а потім здійснити це видалення"

Якщо ви також сподівались зробити так, щоб репо виглядало так, ніби він ніколи не відслідковував цей файл, це набагато складніше і сильно відсторонено, оскільки він не лише створює абсолютно нові комітети для кожного вчинку в вашій історії, тим самим знищуючи сумісність в противному режимі між іншими людьми, які клонували ваше репо, але це також залишає неперевіреним кожне з цих зобов'язань (якщо припустити, ви перевіряєте свої зобов'язання перед тим, як вносити їх).

Маючи на увазі цей застереження, інструмент, який ви шукаєте, якщо це ваша мета filter-branch. Перший приклад робить саме те, що я описую.


3
використовуючи git rm --cached, здається, він не лише видалив мою гілку, але коли я перетягуюсь на іншу систему, вона фізично видаляє файли в цій системі. Будь-яка ідея, що там відбувається?
biagidp

2
У відповідь на вищесказане: я вважаю, що проблема полягала в тому, що я не мав .gitignore в альтернативній системі перед тим, як перетягнути зміни, тому видалення видалило локальну копію. Принаймні, така теорія
biagidp

53

Щоб зупинити відстеження файлу, просто скористайтеся git rm --cached <filename>.

Але, як вказують інші тут, додавання файлу до .gitignore може перешкодити вам випадково додати його знову пізніше.


1

додати файл gitignore.

див. http://git-scm.com/docs/gitignore


13
Це лише половина відповіді. .gitignoreзаписи не застосовуються до файлів, які вже відстежуються.
CB Bailey

10
Друга частина - це, git rm --cached <file>а потім закінчення цього видалення.
Якуб Нарбський

1
Чому не існує простої команди для git для переоцінки всіх відслідковуваних поточних файлів відповідно до поточного .gitignore файлу? ... чи це занадто багато здорового глузду? : p
Олександр - Відновіть Моніку
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.