Про гит: я пользуюсь терминалом и всем рекомендую именно терминал. Это неспроста. Когда-то я поотвечал на кучу вопросов по git на stackoverflow. Немалая часть проблем вызывана тем, что люди пользуются клиентами для гита. Клиенты вносят две проблемы:
1. Часто в интерфейсе клиента используются собственные термины для разных операций. Вот представьте, что есть кнопка Synchronize. Что она делает: забирает изменения с сервера, отправляет их на сервер, всё это, что-то иное?
2. Клиенты прячут конкретные сообщения об ошибках за размытыми формулировками, которые не гуглятся. Например, мы нажимаем кнопку Synchronize и клиент пишет нам «ошибка соединения». Что это означает? Ошибка в пути, на сервере нет нашего публичного ключа, мы пушим в защищённую ветку, мы отключили интернет, сервер ответил 502?