2010-07-01 3 views
4

Я ошибочно добавил некоторые локальные файлы проекта в репозиторий git и совершил/нажал их.Как удалить файлы в хранилище, сохраняя (и игнорируя) их локально?

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

Каков наилучший способ сделать это?

+0

Мы уже вопрос об игнорировании на SO, не так ли? O_o –

ответ

4

Чистейший решение следующих действий.

  • git rm --cached дополнительные файлы локально (обратите внимание на --cached возможность сохранить эти файлы в рабочем каталоге),
  • объявление d их в ваш файл .gitignore и git commit -A -m "..." после этого
  • нажмите на свою ветку (история перезаписи не переписана, но предыдущая история сохранит ссылки на эти файлы).

Если вы думаете, не слишком много людей вытащили из удаленного репозитория (в идеале, ни один), вы можете:

  • исправить историю коммитов локально
    (git rebase --interactive first-commit-with-files^: свойство «^», ссылающиеся на родитель фиксация первого, где ты ввести плохие файлы
    git rm --cached файлов, а затем воспроизводить другой commmits, если некоторые из них не были также внесены изменения в одних и те же файлы
    Other solutions here -.. git filter-branch или git rebase),
  • толчок --force вашей отрасли,
    (но тогда, будьте готовы указать человек к RECOVERING FROM UPSTREAM REBASE части страницы git rebase людей).
    (см definition of upstream here)
1
  1. Создайте новую ветку, которая имеет фиксацию с файлами.
  2. Сбросьте исходную ветку до того места, где она была раньше.
  3. Сделайте push -f, чтобы принудительно вернуть удаленный назад (ПРЕДУПРЕЖДЕНИЕ: это «сломает» репозитории, у которых есть те фиксации, которые были вытащены - его можно отменить, но ручную работу).
1

Ну добавить их в .gitignore (строка разделенных имен файлов в главном каталоге репо, а затем следовать этому руководству:. http://help.github.com/removing-sensitive-data/ Наконец git push -f принудительно перезаписать удаленный репозиторий

Смежные вопросы