2015-01-04 3 views
0

Я потратил полчаса на чтение вопросов и ответов, и все же я не нашел простой способ сделать это. Итак, есть ли простой способ удалить ненужный файл из истории Github (просто для того, чтобы назвать файл и удалить его)?Есть ли простой способ удалить ненужный файл из истории Github?

+1

Я не проголосовал, но я бы предположил, что downvotes - это потому, что этот вопрос может быть истолкован как дубликат: http://stackoverflow.com/a/21031833/438886 http://stackoverflow.com/ a/14656358/438886 http://stackoverflow.com/a/17890278/438886 - удаление файлов из истории - запутанная область даже для опытных пользователей Git, и люди спрашивают об этом множеством разных способов.Меня даже попросил модератор Stackoverflow прекратить отвечать на них, потому что многие мои ответы касались моего собственного проекта, BFG: | Дайте мне знать, если вы найдете мой ответ полезным! –

+0

Спасибо большое, я начинающий git, и я просто хочу знать, можно ли это сделать без слишком большой процедуры. –

ответ

1

Не из GitHub напрямую.

Вам все равно придется клонировать его локально, очистить его (with BFG, например, faster than the git filter-branch) и нажать его обратно.
Толчок будет силой одного git push -force, что означает, что вам нужно уведомить других пользователей об этом репо, чтобы они сбросили свой собственный клон.

Например (с BFG: "Cleaning Up Git Repositories With The BFG Repo-Cleaner"):

bfg --delete-files id_{dsa,rsa} my-repo.git 
2

Как говорит @VonC, GitHub не предоставляет возможность удалять файлы из истории через пользовательский интерфейс. В аутсайдерах, это было бы мое мнение о том, почему это так:

  • После того, как данные на GitHub, это уже слишком поздно в каком-то смысле. Если данные приватные, а затем положить его на GitHub, он уже скомпрометировал эту конфиденциальность. Если данные действительно большие, у GitHub уже есть фильтры, чтобы остановить любой файл, размер которого превышает 100 МБ.
  • Переписывание истории (особенно для удаления данных), очевидно, очень разрушительные & разрушительных - вид, что вы не обязательно хотите сделать легко. Если они сделали, включите его, им придется окружить его уродливым подтверждением, вы-действительно-уверенные диалоги.
  • Пока я не создал BFG, основной инструмент для удаления файлов из истории мерзавца был git filter-branch, который очень медленно на больших РЕПО - GitHub пришлось бы бросить эти очистку рабочих места на в продолжительную очередь, и скажите, чтобы вы вернулись позже. В случае большого репо это could have taken days to complete the job.

Учитывая все это, вполне разумно, что GitHub не поддерживает его самостоятельно. Вы должны делать это самостоятельно из командной line-, но это не так сложно, я написал BFG к make this process simple:

bfg --delete-files myBad.mp3 

... BFG теперь рекомендовано GitHub, Atlassian, а также в docs для git filter-branch себя.

Кстати, Git является базовым программным обеспечением источника управления, GitHub является компанией, которая предоставляет принимающий-ГИТ (так что вы переписывание истории Git, а не GitHub истории действительно).

Полное раскрытие информации: Я являюсь автором BFG Repo-Cleaner.

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