Здравствуйте!👋😄 Если вы хотите узнать, как разрешать конфликты в GIT и наилучшим образом обрабатывать ветки… вы попали по адресу! В этой статье вы узнаете, что такое ветка и для чего она нужна, и даже как легко интерпретировать и разрешать эти распространенные и досадные потенциальные конфликты 🥴.
Давай приступим к работе!

😲 Что такое ветка? 😲

Ветки — это способ внести изменения в наш проект, не затрагивая рабочий процесс основной ветки. Это потому, что мы хотим работать над очень конкретной частью приложения или просто экспериментировать.
Заголовок или HEAD представляет ветку и коммит той ветки, в которой мы работаем. По умолчанию этот заголовок появится в последнем коммите нашей основной ветки. Но мы можем изменить его, создав ветку с помощью следующих команд: «git branch + ram» / «git checkout -b + branch» или вовремя перейти к любому другому коммиту из любой другой ветки с команды с «git reset id-commit» или с «git checkout + branch-o-id-commit»
👾 Поток данных между филиалами 👾

Основная ветвь (текущая версия) будет такой, как указано в ее названии; главная ветвь, оригинальная и самая важная.
Из ветки master можно сделать больше веток, которые каким-то образом «наследуют» ее, по крайней мере, при создании. Множественные ветки созданы в основном для того, чтобы можно было тестировать, не затрагивая исходную версию проекта, поэтому вы можете выполнять тесты и другие очень полезные вещи с «копией», идентичной, которая идеально имитирует исходную версию, не рискуя повредить что-то важное. .
Каждая ветвь независима от другой в том смысле, что если одна из них будет изменена, ни одна из них не узнает ничего о том, что происходит в другой… если только мы не организуем это, выполнив какой-нибудь очень интересный процесс, который я объясню вам позже. Каждая ветвь похожа на отдельную и независимую временную шкалу другой от ее создания. Интересен тот факт, что когда вы меняете ветки, код автоматически меняется так, как он есть в этой ветке; вы можете рассматривать это как путешествие между измерениями.
- Чтобы изменить ветку, используйте команду «git checkout + имя ветки».
- Чтобы узнать, в какой ветке вы находитесь, используйте "git status" или "git branch".
- Если вы хотите создать новую ветку, сделайте это с помощью «ветвь git + имя новой ветки».
Затем, когда вы запустите "git show", вы увидите последний коммит, а HEAD (индекс) покажет, к каким веткам подключен этот коммит.
Примечания
- Существует более простой и быстрый способ фиксации файлов без необходимости выполнять "git add", а также "git commit" и использовать "git commit -am + "commit message" но это работает только с файлами, которые ранее были добавлены «git add», это не работает с новыми файлами, которые не отслеживаются git.
- VIM: это текстовый редактор. Вы обычно попадаете сюда, не сопровождая свой коммит комментарием. Чтобы войти в режим записи, вы нажимаете "esc + i", затем вводите сообщение фиксации, а с помощью "esc + shift + z + z" сохраняете, и ваша фиксация готовый.
👽 Слияние Git 👽
Команда git merge позволяет нам создать новый коммит с комбинацией двух веток (ветка, на которой мы находимся при выполнении команды, и ветка, которую мы указываем после команды).
Удивительно, не так ли? Как будто у Git есть сверхспособности знать, какие изменения мы хотим сохранить из одной ветки, а какие — из другой. Проблема в том, что не всегда можно угадать, особенно в некоторых случаях, когда две ветки имеют разные обновления на одних и тех же строках в файлах. Помните, что, выполнив команду «git checkout» для переключения веток или фиксации, вы можете потерять задание, которое не сохранили 😨 Всегда не забывайте сохранять изменения перед выполнением проверки!

На изображении мы можем видеть, как коммит выше говорит, что у него есть слияние и что это объединение двух коммитов, у него даже есть небольшая часть идентификатора каждого коммита как указание на то, какие коммиты были объединены, то есть что именно было слиянием или объединением.
Команда объединить используется для интеграции изменений из другой ветки. — git-tower.com
Есть одна любопытная и важная вещь, которую следует упомянуть о слияниях, а именно то, что ветвь, в которой вы находитесь, когда вы сливаетесь, это та, которая собирается вызвать другую, чтобы присоединиться к вам. Таким образом, если бы вы объединились с веткой «заголовок», чтобы присоединиться к ней, «заголовок» автоматически стал бы главной веткой. Если вы не хотите менять основную ветку, идеальным вариантом будет слияние с основной веткой, и она будет дополнена другой веткой, сохраняя свой статус🧐.

Примечания
- Перед изменением ветки вы должны добавить изменения в измененную ветку, иначе все изменения сделанные в ветке будут удалены и будет как будто вы ничего не делали.
- Чтобы избежать катастроф, лучше всего сделать "git add", а затем "git commit -m + сообщение фиксации" или, что предпочтительнее, просто "git commit -am + сообщение фиксации". > а затем вы можете выполнить "git checkout" с гарантией того, что изменения, внесенные в ветку, из которой вы хотите перейти, надежны.
- Поскольку слияния также являются фиксациями, им нужно сообщение, а если нет, VIM откроется автоматически, как и любая другая фиксация.
😧 Конфликты 😧
Git никогда ничего не стирает, если мы ему об этом не скажем. Когда мы используем команды «git merge» или «git checkout», мы меняем ветки или создаем новый коммит, а не удаляем ветки или коммиты (помните, что вы можете удалять коммиты с помощью "git reset" и ветвей с помощью "git branch -d").
Git очень умен и может автоматически разрешать некоторые конфликты; как изменения и новые строки. Но иногда вы не знаете, как разрешить эти различия, например, когда две разные ветки вносят разные изменения в одну и ту же строку. Это известно как конфликт, и вы можете решить его вручную, вам просто нужно выполнить слияние, перейти в редактор кода и выбрать, хотите ли вы сохранить одну из этих двух версий или что-то другое. Но ждать! Некоторые редакторы кода, такие как Visual Studio Code, позволяют очень легко разрешать эти конфликты без необходимости удалять или записывать текстовые строки, просто нажмите кнопку и сохраните файл.
Помните, что вы всегда должны создавать новую фиксацию, чтобы применить изменения слияния. Если Git сможет разрешить конфликт, он автоматически зафиксируется. Но если вы не можете решить это, вам нужно исправить это и зафиксировать. Файлы с конфликтами с помощью команды git merge переходят в новое состояние, известное как Unmerged. Они очень похожи на файлы статуса Unstaged, что-то вроде промежуточного состояния между Untracked и Unstaged, вам просто нужно запустить git add, чтобы передать их в промежуточную область, и git commit для применения изменений в репозитории.
😄 Разрешение конфликтов 😄
Просто прислушиваясь к слову «конфликт» мы обычно автоматически и не осознавая этого напрягаемся, а уж тем более когда речь идет о коде, так запросто все может стать чем-то страшнее кошмара, однако благодаря Visual Studio Code это уже не так . Это значительно упрощает задачу, и чтобы доказать это, вот краткое сравнение, а также объяснение того, что именно происходит на каждом изображении:
Что это такое?
- Знаки «меньше чем» говорят о том, что это то, что было раньше или также нынешнее.
- Знаки «больше чем» указывают изменения, которые вы хотите поставить перед предыдущими.
Как мы могли бы исправить это столкновение версий? Что ж, ручной способ — просто удалить версию кода, которую мы не хотим сохранять.
Ужасно, не так ли?
Не паникуйте! Приведенный выше сценарий — это то, что произошло бы, если бы не существовало нашего любимого, полезного и прекрасного друга Visual Studio Code.
На самом деле, это тот же редкий средний текст, описанный выше, только теперь он намного читабельнее, и, кроме того, вверху у нас есть возможность выбрать одним щелчком мыши, с какой из двух версий мы хотим остаться, и другие варианты, которые может быть очень полезным, например, сравнение каждой версии кода. Как только конфликт будет разрешен, мы вернемся к консоли и, наконец, зафиксируем… но подождите, что вы имеете в виду под фиксацией? Разве это не должно быть ответвлением? Нет, на самом деле произошло то, что когда возник конфликт, у вас, должно быть, было сообщение, в котором говорилось что-то вроде «Вы сделали ошибку, вернитесь, когда исправите ее».
Это неявно, но в это время ветвь переходит в состояние, называемое Unmerged, и следующая фиксация будет принята как решение конфликта. Помните, что слияние по-прежнему является фиксацией.
Суммируя…
Ветки — это способ вносить изменения в наш проект, не затрагивая рабочий процесс основной ветки, место, где вы можете проводить эксперименты, не опасаясь повредить рабочую версию вашего проекта😌.
Слияния представляют собой комбинацию двух фрагментов кода в разных ветках, и при их выполнении создается коммит, идентификатор которого является гибридом между идентификаторами веток, из которых он был создан.
Иногда возникает неизбежная ситуация, когда одни и те же строки кода изменяются, и, желая объединить изменения, GIT вступает в «конфликт», не зная, какую версию следует учитывать. Итак, у нас есть нечто, буквально именуемое так: «конфликты» 😨. Когда они появляются на консоли, это может быть настоящей тарабарщиной, но, к счастью, Git также позволяет вам просматривать их в редакторе кода, что значительно упрощает чтение и решение. Помните, что GIT указывает старые изменения несколькими знаками «меньше чем», а новые — знаком «больше».
Команды:
- checkout + название ветки: размещает вас в указанной ветке.
- сброс:это как проверка, но без возможности возврата.
- название-ветви -d: удаляет ветку.
- merge: объединяет изменения между ветвями.
- зафиксировать: отправить последние изменения в локальный репозиторий.
- Статус: позволяет просматривать изменения, которые еще не были отслежены/добавлены.
- show: показывает все сделанные изменения.
- добавить: отправить изменения в промежуточную версию.
Некоторые состояния в GIT:
- Неотслеживаемый: файл, существующий локально, но не являющийся частью репозитория Git.
- Неустановленные: изменения, которые существуют в вашем рабочем каталоге, но Git еще не зарегистрировал их в своей истории версий.
Надеюсь, эта статья была вам полезна 😄. Вы можете поставить мне лайк или подписаться на меня, если этот пост был полезен или вы узнали что-то новое🥰👏
Увидимся в следующий раз!😉