Предположим, что Вы работаете над каким-то проектом вместе с другом. Вы не распределили обязанности и можете работать над одной и той же частью проекта. Что будет, если в одном и том же месте будет написан разный код?
Давайте для начала создадим репозиторий на гитхабе с названием dummies-do-the-same
Скопируйте на следующей странице ссылку на репозиторий.
Создайте на рабочем столе две директории: you
и yourFriend
Склонируйте репозиторий в первый каталог: git clone [данные с сайта]
Создайте в папке репозитория внутри you файл main.swift
и откройте его в vim
.
Затем создайте в файле что-нибудь простое:
import Foundation
var a = 0
git add -A
git commit -m "Первый коммит"
git push origin master
Перейдите в папку ~/Desktop/yourFriend
: cd ~/Desktop/yourFriend/
Склонируйте репозиторий во второй каталог: git clone [данные с сайта]
И замените в файле main.swift
var a = 0
на var a = 10
:
git add -A
git commit -m "fixed a variable"
git pull origin master
Вы увидите сообщение что ничего нового нету:
Давайте добавим эти изменения на сервер: git push origin master
Теперь, не выгружая правки с сервера откройте файл main.swift
в Вашем каталоге и исправьте то же самое, но на 11
:
Отправьте коммит в локальную среду:
А теперь выгрузите данные с сервера:
Упс. А у Вас тут конфликт.
Откройте файл в vim и вас ждет странный текст:
Он показывает разницу в различных ветках
Введите git mergetool
и Вы увидите дополнительны файлы файлы бэкапа.
Теперь просто нажмите enter.
Откроется редактор слияния файлов. Нажав внизу по кнопке Вы можете получить разные варианты автоматически или самостоятельно переделать в нижней панели конфликт. Измените переменную на 13 и сохраните изменения.
Теперь в терминале удалите исходный файл с расширением .orig
: rm main.swift.orig
Теперь отправьте коммит и загрузите его на сервер:
Всё здорово.