Сейчас читаю эту старую статью, и вспомнил про ваш вопрос.
В статье пишут про принципы хорошей архитектуры ПО, и среди прочего объясняют, зачем нужны интерфейсы/абстрактные классы и т.п. Рекомендую.
tasks.json это не статический файл. Это один из видов записи запроса к api, где json может просто указывать запросу, в каком формате надо вернуть данные
Открываешь страницу в браузере, открываешь консоль разработчика на вкладке "Сеть", выбираешь пункт с загрузкой картинки. Из контекстного меню выбираешь "Копировать как cURL". Потом вдумчиво разбираешь параметры.
branch-name - название ветки
commit-hash - хеш-код коммита начиная с которого нужно сделать ветку. Все коммиты, которые были позже, не войдут в новую ветку.