Master - ветка, которая в любой момент готова к релизу.
Dev - ветка, в которой ведется разработка.
При обнаружении какой-то ошибки или добавления фичи - стоит отщепить ветку от dev'а, назвать её соответсвенно (login, к примеру), добавить все измененные или новые файлы для коммита, а затем сделать push. После того, как все изменения залиты на репозитории, стоит обновить свою ветку из dev (перейти в нее и сделать pull). Это делается для избежания конфликтов сливания. Затем все изменения, которые прошли в dev ветке слить в свою. Теперь конфликтов никаких не будет и ветка с разрешенными конфликтами в репозитории. Далее с помощью pull-request слить новую ветку с dev'ом