Удаление файлов с гитхаба

Я уже некоторое время использую github для одного проекта, но только как средство отслеживания проблем. Итак, сегодня вечером я посвятил некоторое время работе с кодом и совершил ошибку новичка: я зафиксировал файлы учетных данных и другие ненужные данные. Я добавил их в файл .gitignore сейчас, и они больше не должны быть проблемой, но я вижу, что они доступны в истории.

Это создает проблему безопасности, поэтому я должен разобраться и удалить эти конфиденциальные данные. В настоящее время я являюсь единственным разработчиком, поэтому я хранил код только на своем ПК и на самом сервере, но также хотел освоить это.

До сих пор я пробовал эту статью, это тоже и нашел несколько вопросов по Так, но не смог понять это. В основном я получаю какую-то ошибку, подобную этой: fatal: ambiguous argument 'rm': unknown revision or path not in the working tree.

Я бы удалил весь репозиторий, но у меня там довольно много данных об отслеживании проблем, поэтому мне нужно их сохранить, так что это не вариант. Я не возражаю против других коммитов, я могу начать с нуля с кода с моей локальной машины, но мне нужен какой-то способ потерять старые коммиты и их полную историю или изменить эти файлы (некоторые вещи в .gitignore являются каталогами, так что это может быть очень муторно снимать)

Я пытался с git rebase -i, но там я вижу только три моих последних коммита (тестирование), которые не были отправлены, остальные, которые находятся в сети, 10 или около того из них там не отображаются.

Репозиторий, который я использую, является закрытым, и доступ к нему есть только у меня и у клиента, поэтому третья сторона этого не видела.

Я новичок в git, поэтому спасибо за ваше время и помощь!


person wont_compile    schedule 09.01.2014    source источник
comment
Можете ли вы создать новое репо, скопировать/вставить туда нужные файлы, а затем удалить старое репо?   -  person    schedule 10.01.2014
comment
Это приведет к тому, что я потеряю всю историю отслеживания проблем, а там довольно много обсуждений, поэтому мне нужно ее сохранить.   -  person wont_compile    schedule 10.01.2014


Ответы (4)


Во-первых, вот важная часть: Считайте, что ваши учетные данные скомпрометированы. Измените их. Что бы вы ни делали в этот момент, они больше не являются безопасными.

Теперь, когда вы это сделали, у вас есть несколько вариантов:

person Chris    schedule 09.01.2014
comment
Спасибо, на этом я закончил. Я понимаю риски безопасности, но поскольку это частное хранилище, я должен быть в безопасности, верно? :) - person wont_compile; 10.01.2014
comment
Конечно, решать вам. Но я бы все же рекомендовал их поменять. Подумайте о боли, которую вы делаете, по сравнению с болью от какого-то нарушения в будущем. - person Chris; 10.01.2014
comment
Конечно, я на всякий случай сделаю это в выходные, получу новый набор учетных данных для всех областей, чтобы начать этот новый год чистым :) - person wont_compile; 10.01.2014

ИМХО, BFG (который уже упоминается на странице справки GitHub, на которую вы ссылаетесь) лучший (самый простой в использовании и самый быстрый) инструмент для этого. Это действительно так просто, как показывают примеры. После перезаписи вашей локальной истории с помощью BFG принудительно отправьте ее на сервер, и все готово.

person sschuberth    schedule 09.01.2014
comment
Спасибо, но я очень не хочу больше Java на своем ПК :) Я как-то умудрился это сделать и с веткой-фильтром, но в конце решил все затереть и начать чистую, так как история на самом деле не важна, 15 или так, коммиты, которые у меня были, были просто игрой с github. - person wont_compile; 10.01.2014

Я тоже получил ту же ошибку неоднозначного аргумента, когда пытался запустить эту команду:

git filter-branch --force --index-filter \
  'git rm --cached --ignore-unmatch path\to\my\file.txt' \
  --prune-empty --tag-name-filter cat -- --all

Я смог запустить его, изменив одинарные кавычки на двойные кавычки и обратную косую черту на косую черту.

git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch path/to/my/file.txt" \
  --prune-empty --tag-name-filter cat -- --all
person Gabor Juhasz    schedule 26.01.2014
comment
Да, это было полезно с учетом этой ошибки, но я решил ее по-другому, как было предложено в ответе, который я принял. Спасибо - person wont_compile; 27.01.2014

Даже того, что он был у вас в течение некоторого времени, достаточно, чтобы быть нитью безопасности. Разберитесь с реальной проблемой: у вас произошла утечка учетных данных, и вы должны сначала изменить их. После этого файл на гитхабе вообще не будет иметь никакой ценности и его можно оставить там в истории. Чтобы было более понятно, почему вы даже не должны удалять его из github, предположим, что он был закеширован поисковыми системами, поэтому любой может получить доступ к этому файлу даже после того, как он был удален из github.

person AlexanderM    schedule 09.01.2014