Гайд по решению конфликтов.
Небольшой гайд по решению конфликтов в гит. В основном мы используем smartgit, следовательно и гайд рассчитан под решение конфликтов именно в этом клиенте. Хотя большинство советов являются универсал
Last updated
Небольшой гайд по решению конфликтов в гит. В основном мы используем smartgit, следовательно и гайд рассчитан под решение конфликтов именно в этом клиенте. Хотя большинство советов являются универсал
Last updated
При возникновении конфликтов, если вы не умеете их решать, или не уверены в том что умеете делать это правильно - пингуйте продюсеров и тех. Перед тем как вы будете готовы самостоятельно решать конфликты, нужно решить как минимум 10 конфликтов вместе со знающим человеком.
В большинстве случаев можно предотвратить появление конфликтов. Для этого нужно следовать этим небольшим правилам:
Разделяйте сцену на префабы и работайте уже с ними, таким образом можно избежать конфликтов на сцене.
При работе с сценой или с префобам спрашивайте в канале проекта, кто еще работает с ними. Если кто-то еще работает со сценой или с префабом, то лучшим вариантом будет подождать пока другой человек не закончит и потом, запулив его изменения, приступать к своим изменениям.
Старайтесь не работать в одном файле одновременно с другими программистами.
Самое первое что необходимо сделать перед решением конфликтов - сохранить стеш. Стеш это некоторое хранилище в которое вы можете поместить все свои изменения, чтобы потом вы могли их вернуть, если они пропадут. Также стешем можно пользоваться чтобы не потерять свои изменения, когда нужно откатится назад по коммитам, или перейти на другую ветку.
Чтобы сохранить свои изменения в стеш, перед тем как их коммитить нажмите Save Stash
Кнопка Stash All переместит все ваши изменения в стеш и удалит их из рабочего дерева. +Keep Index то же самое, но запомнит место в рабочем дереве. +Keep Working Tree копирует ваши изменения в стеш, не удаляя их. После сохранения вы увидите свой стеш в этом списке
После этого вы можете применить изменения, нажав по ним в списке правой кнопкой мыши и выбрав Apply Stash.
Или можете нажать Apply Stash тут и тогда вы вернете последние изменения из стеша.
Если вы сделали в префабе или на сцене не очень много изменений, например поменяли пару параметров, то самым простым способом будет откатить свои изменения в конфликтном файле. Изменения у других файлов не откатятся.
Это можно сделать следующим образом: при возникновении конфликта нажимаете на конфликтный файл
У вас появятся кнопки, при помощи которых можно выбрать, чьи изменения применятся.
кнопка Conflict solver(1) - откроет Conflict solver.
Take Theirs(2) - применит чужие изменения к файлу.
Take ours(3) применит наши изменения к файлу.
Recreate Conflict(4) - вернет отменит все наши изменения в конфликтном файле.
Stage(5) - сохраняет решение конфликта и после нажатия позволит закоммитить.
Нажимаете Take Theirs(1), потом Stage(2), потом Commit(3). После этого конфликт будет решен и вы сможете заново внести свои изменения.
У смарт гита есть встроенная утилита, для решения конфликтов. Решать конфликты в префабах и сценах при этой утилиты можно, но сложно, т.к. в таком случае вам придется решать конфликт в текстовом виде сцены или префаба. В основной при помощи этого инструмента решаются конфликты в скриптах.
Перед вами появится вот такое окно
Чтобы выбрать данный вариант отображения изменений нажмите All(1), так слева будут текущие изменения, справа чужие изменения, а посередине итоговый вариант.
При помощи Next Conflict(2) можно перейти к следующему конфликту в файле. Prev. Conflict(3) перейдет к предыдущему конфликту. Теперь, когда мы перешли к конфликту мы можем попробовать его решить.
Все что описано дальше применится только на один конфликт в файле, так что если этих конфликтов много, то придется повторить это для каждого из конфликтов.
Для этого используем следующие кнопки:
Take Left, Right(1) - в итоговый файл вставляются сначала изменения из левого столбца (наши текущие изменения), потом вставляются изменения из правого столбца (чужие изменения)
Take Left (2) - в итоговый файл вставляются только изменения из левого столбца, то есть только наши изменения.
Take Right (3) - в итоговый файл вставляются только изменения из правого столбца, то есть только чужие изменения.
Take Right, Left (4) - в итоговый файл вставляются сначала изменения из правого столбца , потом вставляются изменения из левого столбца.
После того как мы решили конфликты жмем на save и выходим из окна.
При выходе нам предложат застейджить изменения, мы соглашаемся и стейджим их
Теперь нужно проверить работоспособность и если все в порядке, закоммитить и запушить изменения.
Гайд по установке можно найти тут Global Tech
При возникновении конфликтов решите все конфликты кроме сцен и префабов. Далее нужно перейти в папку проекта и открыть git bash консоль, для этого внутри папки проекта нажмите правой кнопкой мыши по свободному месту и выберите git bash here
после нажатия у нас откроется консоль в которой мы должны ввести git mergetool и после этого нажать enter. В git bash появится сообщения по типу “название файла seems unchanged”. Если какой-то конфликт решить не получится, то откроется Meld. Если у вас что-то установлено не правильно, то выскочит ошибка.
Meld такой же инструмент как и conflict solver из smartgit. В нем мы можем решить оставшиеся конфликты. После их решения, жмем save и закрываем окно. Далее на вопрос в консоли отвечаем “y”
и закрываем git bash. Важно, тулза генерирует .orig файлы, желательно их удалять перед тем как коммитить решение конфликта.
После удаления файла проверяем работоспособность, коммитим изменения и пушим.