Ваша проблема в том, что мерзавец всегда отслеживать файлы, которые мерзавец знает так что если вы проследили файл ранее, чтобы добавить его в .gitignore
, мерзавец не собирается принимать во внимание, что изменения. Будьте внимательны в следующий раз;)
Существует два разных контекста, в которых вы отслеживали файлы, которые вы больше не хотите отслеживать.
файлам или каталоги, которые вы действительно не хотите поделиться в вашем хранилище, так что вам нужно, чтобы удалить их из всей истории репозитория, как пароль (по соображениям безопасности), конфигурационные файлы, исполняемые файлы, большие ресурсы файлы и т.д.
файлы или каталоги, которые вы не включать в свой файл .gitignore, что вы не хотите, чтобы отслеживать, но что вы не возражаете, чтобы сохранить в истории репозитория
Удалить ПОСТОЯННО
Если в первом случае, вы должны использовать filter-branch --tree-filter
и передать команду, которую вы хотите EXEC.
git filter-branch --tree-filter 'YOUR COMMAND' HEAD
Эта команда удалит навсегда файлы или каталоги, которые вы указывают из истории репозитория всего, и заставить других соавторов выполнить git pull -f
синхронизировать репо с новым удаленным государством, так что будьте осторожны, потому что вы можете Не отменяй это!
Например, если вы отследили файл с именем Keys.plist
, то традиционная команда для его удаления будет rm Keys.plist
.В случае, если вы хотите того убедиться, что это работает, я рекомендую вам добавить -f
параметр, чтобы заставить средство удаления
Пример:
git filter-branch --tree-filter 'rm -f Keys.plist' HEAD
В вашем случае, если вы хотите удалить каталог, так что я полагаю, вам нужно добавить -R для команды ет следующим образом:
git filter-branch --tree-filter 'rm -f -R YourDirectory' HEAD
Итак, вам нужно нажать вашу ветку к удаленному репозиторию с
git push origin YourBranch -f
Не забудьте включить -f
для принудительного обновления в удаленном репозитории.
Только не отслеживать эти файлы в будущем
Это более простая, вы во втором контексте, и вы не возражаете, что ваши файлы идут появляться в истории репозитория.
Таким образом, в этом случае вы должны использовать git rm --cached -r YourDirectory
Не забудьте включить этот раз ваши dinrectories или файлы, которые вы не хотите отслеживать в файле .gitignore
.
Вы пытались удалить папку с помощью 'git rm'? –
Вам также нужно удалить папку, а не только игнорировать ее. – Peque
Используйте 'git rm --cached', чтобы удалить файл из репо, но сохраните его на своем компьютере. Однако это сохранит файл в истории, поэтому, если у него есть конфиденциальная информация, кто-то все равно сможет его найти, посмотрев историю фиксации. Вам также нужно будет «добавить/зафиксировать/нажать», чтобы увидеть изменения github. –
IanAuld