Как уменьшить размер repo на GitHub

Я не знаю, понижает ли это на самом деле сцепление.

Агрегирование/состав - все о классе, использующем другие классы для соблюдения контракта, который оно представляет через его открытые методы. Класс не должен копировать интерфейс, он связал объекты. Это на самом деле скрывает любой knwowledge об этих агрегированных классах от вызывающей стороны метода.

Для подчинений закону Demeter в случае нескольких уровней зависимости от класса просто необходимо применить агрегирование/состав и хорошую инкапсуляцию на каждом уровне.

, Другими словами, каждый класс имеет одну или несколько зависимостей от других классов, однако это только когда-либо зависимости от класса, на который ссылаются, а не от любых объектов, возвращенных из properies/methods.

8
задан Corban Brook 20 October 2009 в 19:22
поделиться

2 ответа

Невозможно удалить их без изменения истории, поэтому, если кто-то извлек изменения, вам, возможно, придется разобраться с этим беспорядком - см. восстановление после upstream rebase в man git-rebase . Это может быть очень плохо, в зависимости от вашего рабочего процесса - так или иначе вы » мне, вероятно, придется сообщить всем, что им нужно переключиться на «новую» главную ветку, перебазируя любую незавершенную работу поверх нее.

Если бы фиксация все еще была на кончике, вы могли бы сбросить ее до фиксации перед этим. :

git reset --hard HEAD^

или исправьте его:

git rm test.wav
git commit --amend

Но поскольку его больше нет на кончике, лучше всего, вероятно, сделать это с помощью интерактивной перебазировки:

git rebase -i <commit-before-mistake>

Измените «выбрать» на «редактировать» в желаемой фиксации чтобы исправить, тогда приступайте к делу! (или даже удалить весь коммит, если это нормально) *

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

git push -f origin

* Если вы ' После внесения изменений в эти файлы вы столкнетесь с проблемами по мере продолжения перебазирования. С ними должно быть просто иметь дело, так как вы просто хотите, чтобы файлы исчезли. Конечно, если с тех пор произошла сотня коммитов, которые все вызовут конфликты, вы можете взглянуть на git-filter-branch . Соответствующий пример из справочной страницы :

git filter-branch --index-filter ’git rm --cached --ignore-unmatch filename’ HEAD

11
ответ дан 5 December 2019 в 12:59
поделиться
  1. Remove it from your local history on the branch where you committed it. One way to do that is using git commit --amend if it is your HEAD commit; another is git rebase --interactive.
  2. Force push the updated branch to github.

    git push --force github
    

    (where github is the name of your remote for GitHub).

This will remove it from the active history. To actually reclaim the space, GitHub will need to do a garbage collection. I'm not sure a way to do that explicitly, if they don't do it automatically. You may need to file a support request.

2
ответ дан 5 December 2019 в 12:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: