4) создаю ветку dev и перехожу на нее
5) создаю файл 2.txt
6) удаляю файл 1.txt
7) делаю коммит в dev
8) после чего в ветке master лежит файл 1.txt, а в ветке dev файл 2.txt
9) Собственно самое главное. Находяcь в ветке dev я делаю git merge master. И получаю сообщение: "Already up-to-date."
Вопрос почему в ветку dev не подтягивается файл 1.txt из ветки master??
При слиянии происходит объединение изменений, а не файлов. То есть, берётся последний общий предок и к нему применяются изменения из обеих веток.
В вашем случае общий предок - это коммит в master (только файл 1.txt). В ветке master после этого коммита изменений нет, зато есть в ветке dev. А именно, удаление 1.txt и создание 2.txt.
То есть нужно думать изменениями, а не файлами? Получается, что берется общий предок из мастер и на него накатываются изменения из второй ветки dev включая и удаление файла?
Sergey: именно так. И ещё: вы получили сообщение "Already up-to-date." потому, что пытались добавить изменения из master (а их там нет) в dev. В команде merge вы указываете какую ветку влить, а не куда.
Вадим Мисбах-Соловьёв полностью дал верный ответ. Хочу только добавить что необходимо вам освоить команду git status. Данная команда показывает статусы изменения файлов. А так обычно создают репозиторий и делают ветку dev и туда все коммитят, а потом мержат с master если это необходимо.