HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p><strong>Git</strong>- распределённая система контроля версий, позволяющая сохранять изменения, внесённые в файлы, которые хранятся в репозитории. Сами изменения сохраняются в виде снимков, называемых коммитами. Они могут размещаться на разных серверах, поэтому вы всегда восстановите код в случае сбоя, а также без проблем откатитесь до любого предыдущего состояния. Кроме того, значительно<strong>облегчается взаимодействие с другими разработчиками</strong>: несколько человек могут работать над одним репозиторием одновременно, сохраняя свои изменения.</p>
1 <p><strong>Git</strong>- распределённая система контроля версий, позволяющая сохранять изменения, внесённые в файлы, которые хранятся в репозитории. Сами изменения сохраняются в виде снимков, называемых коммитами. Они могут размещаться на разных серверах, поэтому вы всегда восстановите код в случае сбоя, а также без проблем откатитесь до любого предыдущего состояния. Кроме того, значительно<strong>облегчается взаимодействие с другими разработчиками</strong>: несколько человек могут работать над одним репозиторием одновременно, сохраняя свои изменения.</p>
2 <p>Git имеет множество плюсов, поэтому считается незаменимым инструментом для всех, кто работает в сфере разработки ПО. В этой статье мы рассмотрим, когда используется Git, изучим наиболее полезные<strong>Git-команды</strong>. Если Git вам уже знаком, вы сможете освежить свои знания.</p>
2 <p>Git имеет множество плюсов, поэтому считается незаменимым инструментом для всех, кто работает в сфере разработки ПО. В этой статье мы рассмотрим, когда используется Git, изучим наиболее полезные<strong>Git-команды</strong>. Если Git вам уже знаком, вы сможете освежить свои знания.</p>
3 <h2>Как работать с Git?</h2>
3 <h2>Как работать с Git?</h2>
4 <p>В Git имеется много команд, поэтому разобьём их по теме и причине использования. Но начнём с того, что рассмотрим работу Git на локальной машине, ведь большая часть операций происходит именно там. После этого перейдём к многопользовательскому формату.</p>
4 <p>В Git имеется много команд, поэтому разобьём их по теме и причине использования. Но начнём с того, что рассмотрим работу Git на локальной машине, ведь большая часть операций происходит именно там. После этого перейдём к многопользовательскому формату.</p>
5 <p>Вообще, с Git можно работать и через графический интерфейс (например, GitHub Desktop), и через командную строку. Командную строку изучить необходимо хотя бы потому, что она предоставляет больше возможностей, чем некоторые инструменты с интерфейсом.</p>
5 <p>Вообще, с Git можно работать и через графический интерфейс (например, GitHub Desktop), и через командную строку. Командную строку изучить необходимо хотя бы потому, что она предоставляет больше возможностей, чем некоторые инструменты с интерфейсом.</p>
6 <p>Обычно, команды Git имеют следующий вид:</p>
6 <p>Обычно, команды Git имеют следующий вид:</p>
7 git &lt;команда&gt; &lt;аргументы&gt;<p>В качестве аргумента может быть путь к файлу. Также у команд бывают опции, обозначаемые --&lt;опция&gt; либо -&lt;однобуквенная опция&gt;. Они обеспечивают более<strong>детальную настройку</strong>действия команды. В нашем материале команды будут представлены в общем виде, а значит всё, что будет в &lt;&gt;, вы можете менять на собственные значения.</p>
7 git &lt;команда&gt; &lt;аргументы&gt;<p>В качестве аргумента может быть путь к файлу. Также у команд бывают опции, обозначаемые --&lt;опция&gt; либо -&lt;однобуквенная опция&gt;. Они обеспечивают более<strong>детальную настройку</strong>действия команды. В нашем материале команды будут представлены в общем виде, а значит всё, что будет в &lt;&gt;, вы можете менять на собственные значения.</p>
8 <p>Кстати, если возникают затруднения с использованием той либо иной команды, рекомендуется открыть руководство посредством git help &lt;команда&gt;. Если просто нужно напоминание, применяйте git &lt;команда&gt; -h либо git &lt;команда&gt; --help (в Git -h и --help имеют одинаковое значение).</p>
8 <p>Кстати, если возникают затруднения с использованием той либо иной команды, рекомендуется открыть руководство посредством git help &lt;команда&gt;. Если просто нужно напоминание, применяйте git &lt;команда&gt; -h либо git &lt;команда&gt; --help (в Git -h и --help имеют одинаковое значение).</p>
9 <h2>Установка Git</h2>
9 <h2>Установка Git</h2>
10 <p>Если вы пользуетесь Windows, качайте Git<a>отсюда</a>. Что касается macOS, то здесь Git поставляется как часть инструмента командной строки<strong>XCode</strong>. Наличие Git можно проверить, открыв терминал и набрав git --version. Для Linux используйте команду sudo apt install git-all либо sudo dnf install git-all.</p>
10 <p>Если вы пользуетесь Windows, качайте Git<a>отсюда</a>. Что касается macOS, то здесь Git поставляется как часть инструмента командной строки<strong>XCode</strong>. Наличие Git можно проверить, открыв терминал и набрав git --version. Для Linux используйте команду sudo apt install git-all либо sudo dnf install git-all.</p>
11 <h2>Настраиваем конфигурационный файл</h2>
11 <h2>Настраиваем конфигурационный файл</h2>
12 <p>Сразу после установки Git нужно настроить имя пользователя и email, ведь они используются для идентификации. Данные настройки будут сохранены в конфигурационном файле.</p>
12 <p>Сразу после установки Git нужно настроить имя пользователя и email, ведь они используются для идентификации. Данные настройки будут сохранены в конфигурационном файле.</p>
13 <p>Вы можете отредактировать файл .gitconfig напрямую с помощью редактора или, используя команду git config --global --edit. Чтобы отредактировать отдельные поля, подойдёт git config --global &lt;поле&gt; &lt;значение&gt; - здесь нас интересуют поля<strong>user.email</strong>и<strong>user.name</strong>.</p>
13 <p>Вы можете отредактировать файл .gitconfig напрямую с помощью редактора или, используя команду git config --global --edit. Чтобы отредактировать отдельные поля, подойдёт git config --global &lt;поле&gt; &lt;значение&gt; - здесь нас интересуют поля<strong>user.email</strong>и<strong>user.name</strong>.</p>
14 <p>Кроме того, есть возможность настройки текстового редактора для написания сообщений коммитов - это поле<strong>core.editor</strong>. По умолчанию применяется системный редактор. Поле<strong>commit.template</strong>служит для указания шаблона, который будет задействоваться при каждом коммите.</p>
14 <p>Кроме того, есть возможность настройки текстового редактора для написания сообщений коммитов - это поле<strong>core.editor</strong>. По умолчанию применяется системный редактор. Поле<strong>commit.template</strong>служит для указания шаблона, который будет задействоваться при каждом коммите.</p>
15 <p>Есть и много других полей, но самое полезное -<strong>alias</strong>(привязывает команду к псевдониму). К примеру, git config --global alias.st "status -s" позволит использовать<strong>git st</strong>вместо<strong>git status -s</strong>.</p>
15 <p>Есть и много других полей, но самое полезное -<strong>alias</strong>(привязывает команду к псевдониму). К примеру, git config --global alias.st "status -s" позволит использовать<strong>git st</strong>вместо<strong>git status -s</strong>.</p>
16 <p>А git config --list выведет все поля с их значениями из конфигурационного файла.</p>
16 <p>А git config --list выведет все поля с их значениями из конфигурационного файла.</p>
17 <h2>Создание Git-репозитория</h2>
17 <h2>Создание Git-репозитория</h2>
18 <p>Чтобы инициализировать новый репозиторий<strong>.git</strong>используют команду git init. Если хотите скопировать уже существующий репозиторий - git clone &lt;адрес репозитория&gt;.</p>
18 <p>Чтобы инициализировать новый репозиторий<strong>.git</strong>используют команду git init. Если хотите скопировать уже существующий репозиторий - git clone &lt;адрес репозитория&gt;.</p>
19 <h2>История коммитов в Git</h2>
19 <h2>История коммитов в Git</h2>
20 <p>Git хранит имеющиеся данные в виде набора "снимков", называемых<strong>коммитами</strong>. Коммиты хранят состояние файловой системы в конкретный момент времени, а также имеют указатель на предыдущие коммиты. Каждый коммит содержит уникальный контрольный идентификатор, который используется<strong>Git</strong>, чтобы ссылаться на этот коммит. Для отслеживания истории Git хранит указатель<strong>HEAD</strong>, указывающий на 1-й коммит.</p>
20 <p>Git хранит имеющиеся данные в виде набора "снимков", называемых<strong>коммитами</strong>. Коммиты хранят состояние файловой системы в конкретный момент времени, а также имеют указатель на предыдущие коммиты. Каждый коммит содержит уникальный контрольный идентификатор, который используется<strong>Git</strong>, чтобы ссылаться на этот коммит. Для отслеживания истории Git хранит указатель<strong>HEAD</strong>, указывающий на 1-й коммит.</p>
21 <p>Ссылаться можно как через контрольную сумму коммита, так и через его позицию относительно HEAD. К примеру,<strong>HEAD~4</strong>будет ссылаться на коммит, находящийся 4-мя коммитами ранее HEAD.</p>
21 <p>Ссылаться можно как через контрольную сумму коммита, так и через его позицию относительно HEAD. К примеру,<strong>HEAD~4</strong>будет ссылаться на коммит, находящийся 4-мя коммитами ранее HEAD.</p>
22 <h2>Система файлов в Git</h2>
22 <h2>Система файлов в Git</h2>
23 <p>Git может отслеживать файлы в 3-х основных разделах: - рабочая директория (речь идёт о файловой системе вашего ПК); - область подготовленных файлов (это<strong>staging area</strong>, где хранится содержание следующего коммита); -<strong>HEAD</strong>(последний в репозитории коммит).</p>
23 <p>Git может отслеживать файлы в 3-х основных разделах: - рабочая директория (речь идёт о файловой системе вашего ПК); - область подготовленных файлов (это<strong>staging area</strong>, где хранится содержание следующего коммита); -<strong>HEAD</strong>(последний в репозитории коммит).</p>
24 <h2>Как просматривать изменения в файловых системах?</h2>
24 <h2>Как просматривать изменения в файловых системах?</h2>
25 <p>Для этого используют команду git status. Она отображает все файлы, которые различаются между 3-мя отделами. Файлы имеют четыре состояния: 1)<strong>untracked</strong>(неотслеживаемый). Находится в рабочей директории, но его нет ни в HEAD, ни в области подготовленных файлов. Можно сказать, что Git о нём не знает; 2)<strong>modified</strong>(изменён). В рабочей директории находится его более новая версия по сравнению с той, которая хранится в HEAD либо в области подготовленных файлов (при этом изменения не находятся в следующем коммите); 3)<strong>staged</strong>(подготовлен). В области подготовленных файлов и в рабочей директории есть более новая версия, если сравнивать с хранящейся в HEAD, но файл уже готов к коммиту; 4)<strong>без изменений</strong>. Во всех разделах содержится одна версия файла, то есть в последнем коммите находится актуальная версия.</p>
25 <p>Для этого используют команду git status. Она отображает все файлы, которые различаются между 3-мя отделами. Файлы имеют четыре состояния: 1)<strong>untracked</strong>(неотслеживаемый). Находится в рабочей директории, но его нет ни в HEAD, ни в области подготовленных файлов. Можно сказать, что Git о нём не знает; 2)<strong>modified</strong>(изменён). В рабочей директории находится его более новая версия по сравнению с той, которая хранится в HEAD либо в области подготовленных файлов (при этом изменения не находятся в следующем коммите); 3)<strong>staged</strong>(подготовлен). В области подготовленных файлов и в рабочей директории есть более новая версия, если сравнивать с хранящейся в HEAD, но файл уже готов к коммиту; 4)<strong>без изменений</strong>. Во всех разделах содержится одна версия файла, то есть в последнем коммите находится актуальная версия.</p>
26 <p>Чтобы посмотреть не изменённые файлы, а непосредственно изменения, можно использовать: - git diff - для сравнения рабочей директории с областью подготовленных файлов; - git diff --staged - для сравнения области подготовленных файлов с HEAD.</p>
26 <p>Чтобы посмотреть не изменённые файлы, а непосредственно изменения, можно использовать: - git diff - для сравнения рабочей директории с областью подготовленных файлов; - git diff --staged - для сравнения области подготовленных файлов с HEAD.</p>
27 <p>В случае применения аргумента &lt;файл/папка&gt;<strong>diff</strong>покажет изменения лишь для указанных вами папок или файлов, к примеру:</p>
27 <p>В случае применения аргумента &lt;файл/папка&gt;<strong>diff</strong>покажет изменения лишь для указанных вами папок или файлов, к примеру:</p>
28 <h2>Игнорирование файлов</h2>
28 <h2>Игнорирование файлов</h2>
29 <p>Иногда нам не надо, чтобы Git отслеживал все файлы в репозитории, ведь в их число могут входить: - файлы с конфиденциальной информацией; - огромные бинарные файлы; - специфичные файлы; - файлы сборок, генерируемые после каждой компиляции.</p>
29 <p>Иногда нам не надо, чтобы Git отслеживал все файлы в репозитории, ведь в их число могут входить: - файлы с конфиденциальной информацией; - огромные бинарные файлы; - специфичные файлы; - файлы сборок, генерируемые после каждой компиляции.</p>
30 <p>Для игнорирования предусмотрен файл<strong>.gitignore</strong>, где отмечаются файлы для игнорирования.</p>
30 <p>Для игнорирования предусмотрен файл<strong>.gitignore</strong>, где отмечаются файлы для игнорирования.</p>
31 <h2>Коммиты</h2>
31 <h2>Коммиты</h2>
32 <p>Основой истории версий являются коммиты. Для работы с ними используют git commit - эта команда откроет текстовый редактор для ввода сообщения коммита. Кроме того, она принимает следующие аргументы: •<strong>-m</strong>- позволяет написать сообщение, не открывая редактор, то есть вместе с командой; •<strong>-a</strong>- служит для переноса всех отслеживаемых файлов в область подготовленных файлов и включения их в коммит (даёт возможность перед коммитом пропустить<strong>git add</strong>); •<strong>--amend</strong>- заменяет последний коммит новым изменённым коммитом. Это бывает полезно, когда вы неправильно наберёте сообщение последнего коммита либо забудете включить в него нужные файлы.</p>
32 <p>Основой истории версий являются коммиты. Для работы с ними используют git commit - эта команда откроет текстовый редактор для ввода сообщения коммита. Кроме того, она принимает следующие аргументы: •<strong>-m</strong>- позволяет написать сообщение, не открывая редактор, то есть вместе с командой; •<strong>-a</strong>- служит для переноса всех отслеживаемых файлов в область подготовленных файлов и включения их в коммит (даёт возможность перед коммитом пропустить<strong>git add</strong>); •<strong>--amend</strong>- заменяет последний коммит новым изменённым коммитом. Это бывает полезно, когда вы неправильно наберёте сообщение последнего коммита либо забудете включить в него нужные файлы.</p>
33 <p>Ряд советов по коммитам: - коммитьте часто; - одно изменение - один коммит, но не коммитьте слишком незначительные изменения (в большом репозитории они могут засорить историю); - комментируя сообщение о коммите, логически дополняйте фразу<strong>this commit will ___</strong>и не используйте более 50 символов.</p>
33 <p>Ряд советов по коммитам: - коммитьте часто; - одно изменение - один коммит, но не коммитьте слишком незначительные изменения (в большом репозитории они могут засорить историю); - комментируя сообщение о коммите, логически дополняйте фразу<strong>this commit will ___</strong>и не используйте более 50 символов.</p>
34 <h2>Удалённые серверы</h2>
34 <h2>Удалённые серверы</h2>
35 <p>Мы можем хранить, отслеживать и обновлять историю коммитов не только на локальной машине, но и на удалённых репозиториях. По сути, можно говорить об облачных бэкапах нашей истории коммитов.</p>
35 <p>Мы можем хранить, отслеживать и обновлять историю коммитов не только на локальной машине, но и на удалённых репозиториях. По сути, можно говорить об облачных бэкапах нашей истории коммитов.</p>
36 <p>Для вывода списка удалённых репозиториев нужна команда git remote -v. С её помощью мы не только загружаем копию репозитория, но и отслеживаем удалённый сервер, находящийся по указанному адресу (ему присваивается имя<strong>origin</strong>).</p>
36 <p>Для вывода списка удалённых репозиториев нужна команда git remote -v. С её помощью мы не только загружаем копию репозитория, но и отслеживаем удалённый сервер, находящийся по указанному адресу (ему присваивается имя<strong>origin</strong>).</p>
37 <p>Другие часто употребляемые команды: • git remote add &lt;имя&gt; &lt;url&gt; - добавляется удалённый репозиторий с заданным именем; • git remote remove &lt;имя&gt; - удаляется удалённый репозиторий с заданным именем; • git remote rename &lt;старое имя&gt; &lt;новое имя&gt; - переименовывается удалённый репозиторий; • git remote set-url &lt;имя&gt; &lt;url&gt; - репозиторию с именем присваивается новый адрес; • git remote show &lt;имя&gt; - показывается информация о репозитории.</p>
37 <p>Другие часто употребляемые команды: • git remote add &lt;имя&gt; &lt;url&gt; - добавляется удалённый репозиторий с заданным именем; • git remote remove &lt;имя&gt; - удаляется удалённый репозиторий с заданным именем; • git remote rename &lt;старое имя&gt; &lt;новое имя&gt; - переименовывается удалённый репозиторий; • git remote set-url &lt;имя&gt; &lt;url&gt; - репозиторию с именем присваивается новый адрес; • git remote show &lt;имя&gt; - показывается информация о репозитории.</p>
38 <p>Следующий список нужен для работы с удалёнными ветками: • git fetch &lt;имя&gt; &lt;ветка&gt; - для получения данных из ветки заданного репозитория; • git pull &lt;имя&gt; &lt;ветка&gt; - сливает данные из ветки; • git push &lt;имя&gt; &lt;ветка&gt; - для отправления изменения в ветку заданного репозитория. Когда локальная ветка отслеживает удалённую, достаточно использовать git push или git pull.</p>
38 <p>Следующий список нужен для работы с удалёнными ветками: • git fetch &lt;имя&gt; &lt;ветка&gt; - для получения данных из ветки заданного репозитория; • git pull &lt;имя&gt; &lt;ветка&gt; - сливает данные из ветки; • git push &lt;имя&gt; &lt;ветка&gt; - для отправления изменения в ветку заданного репозитория. Когда локальная ветка отслеживает удалённую, достаточно использовать git push или git pull.</p>
39 <p>В результате несколько человек могут запрашивать с сервера изменения, выполнять изменения в локальных копиях, а потом отправлять их на удалённый сервер. Всё это позволяет<strong>легко взаимодействовать между собой</strong>в пределах одного репозитория.</p>
39 <p>В результате несколько человек могут запрашивать с сервера изменения, выполнять изменения в локальных копиях, а потом отправлять их на удалённый сервер. Всё это позволяет<strong>легко взаимодействовать между собой</strong>в пределах одного репозитория.</p>
40 <h2>Ветвление в Git</h2>
40 <h2>Ветвление в Git</h2>
41 <p>Ключевая особенность Git -<strong>ветвление</strong>, позволяющее работать над разными версиями проекта. Таким образом, вместо одного перечня с упорядоченными коммитами история может расходиться в некоторых точках, поэтому становится похожей на дерево. И каждая ветвь содержит в Git легковесный указатель HEAD, указывающий на последний коммит в данной ветке. В результате можно легко создать много веток. Делая это, называйте ветки согласно разрабатываемой функциональности. Ветку по умолчанию называют<strong>master</strong>.</p>
41 <p>Ключевая особенность Git -<strong>ветвление</strong>, позволяющее работать над разными версиями проекта. Таким образом, вместо одного перечня с упорядоченными коммитами история может расходиться в некоторых точках, поэтому становится похожей на дерево. И каждая ветвь содержит в Git легковесный указатель HEAD, указывающий на последний коммит в данной ветке. В результате можно легко создать много веток. Делая это, называйте ветки согласно разрабатываемой функциональности. Ветку по умолчанию называют<strong>master</strong>.</p>
42 <p>Что ж, у нас есть HEAD для каждой ветки и общий указатель HEAD. Переключение между ветками предполагает лишь перемещение HEAD в HEAD соответствующей ветки.</p>
42 <p>Что ж, у нас есть HEAD для каждой ветки и общий указатель HEAD. Переключение между ветками предполагает лишь перемещение HEAD в HEAD соответствующей ветки.</p>
43 <p>Стандартные команды при ветвлении в<strong>Git</strong>: • git branch &lt;имя ветки&gt; - для создания новой ветки с HEAD, указывающим на HEAD. Если аргумент &lt;имя ветки&gt; передан не будет, команда выведет список всех имеющихся локальных веток; • git branch -d &lt;имя ветки&gt; - для удаления ветки; • git checkout &lt;имя ветки&gt; - для переключения на эту ветку. Если хотим создать новую ветку перед переключением, можем передать опцию -b.</p>
43 <p>Стандартные команды при ветвлении в<strong>Git</strong>: • git branch &lt;имя ветки&gt; - для создания новой ветки с HEAD, указывающим на HEAD. Если аргумент &lt;имя ветки&gt; передан не будет, команда выведет список всех имеющихся локальных веток; • git branch -d &lt;имя ветки&gt; - для удаления ветки; • git checkout &lt;имя ветки&gt; - для переключения на эту ветку. Если хотим создать новую ветку перед переключением, можем передать опцию -b.</p>
44 <p>И локальный, и удалённый репозиторий могут иметь много веток, поэтому при отслеживании на деле отслеживается удалённая ветка, то есть<strong>git clone</strong>привязывает ветвь master к ветви origin/master удалённого репозитория.</p>
44 <p>И локальный, и удалённый репозиторий могут иметь много веток, поэтому при отслеживании на деле отслеживается удалённая ветка, то есть<strong>git clone</strong>привязывает ветвь master к ветви origin/master удалённого репозитория.</p>
45 <p>Парочка команд для привязывания к удалённой ветке: • git branch -u &lt;имя удалённого репозитория&gt;/&lt;удалённая ветка&gt; -текущая ветка привязывается к указанной удалённой ветке; • git checkout --track &lt;имя удалённого репозитория&gt;/&lt;удалённая ветка&gt; - аналогично; • git checkout -b &lt;ветка&gt; &lt;имя удалённого репозитория&gt;/&lt;удалённая ветка&gt; - создаётся новая локальная ветвь и начинает отслеживать удалённую; • git checkout &lt;удалённая ветка&gt; - создаётся локальная ветвь с таким же именем, как и у удалённой, плюс начинает её отслеживать; • git branch --vv - служит, чтобы показать локальные и отслеживаемые удалённые ветки.</p>
45 <p>Парочка команд для привязывания к удалённой ветке: • git branch -u &lt;имя удалённого репозитория&gt;/&lt;удалённая ветка&gt; -текущая ветка привязывается к указанной удалённой ветке; • git checkout --track &lt;имя удалённого репозитория&gt;/&lt;удалённая ветка&gt; - аналогично; • git checkout -b &lt;ветка&gt; &lt;имя удалённого репозитория&gt;/&lt;удалённая ветка&gt; - создаётся новая локальная ветвь и начинает отслеживать удалённую; • git checkout &lt;удалённая ветка&gt; - создаётся локальная ветвь с таким же именем, как и у удалённой, плюс начинает её отслеживать; • git branch --vv - служит, чтобы показать локальные и отслеживаемые удалённые ветки.</p>
46 <h2>Совмещение веток</h2>
46 <h2>Совмещение веток</h2>
47 <p>Обсудив возможности по переключению, можно поговорить, как ветки совмещать после разработки. Ветку, в которую мы желаем слить изменения, назовём основной, а ветвь, из которой будем сливать, - тематической. Существуют 2 способа внести изменения - перемещение и слияние.</p>
47 <p>Обсудив возможности по переключению, можно поговорить, как ветки совмещать после разработки. Ветку, в которую мы желаем слить изменения, назовём основной, а ветвь, из которой будем сливать, - тематической. Существуют 2 способа внести изменения - перемещение и слияние.</p>
48 <h2>Слияние</h2>
48 <h2>Слияние</h2>
49 <p>Включает в себя создание нового коммита, основанного на общем коммите-предке 2-х ветвей, указывает на оба HEAD. Для осуществления слияния нужно перейти на основную ветки и использовать команду git merge &lt;тематическая ветка&gt;.</p>
49 <p>Включает в себя создание нового коммита, основанного на общем коммите-предке 2-х ветвей, указывает на оба HEAD. Для осуществления слияния нужно перейти на основную ветки и использовать команду git merge &lt;тематическая ветка&gt;.</p>
50 <p>Когда обе ветки меняют одну и ту же часть файла, возникает<strong>конфликт слияния</strong>. В этой ситуации Git не понимает, какую версию файла нужно сохранить. Разрешать конфликт следует вручную. Для просмотра конфликтующих файлов, используйте git status.</p>
50 <p>Когда обе ветки меняют одну и ту же часть файла, возникает<strong>конфликт слияния</strong>. В этой ситуации Git не понимает, какую версию файла нужно сохранить. Разрешать конфликт следует вручную. Для просмотра конфликтующих файлов, используйте git status.</p>
51 <p>Маркеры разрешения конфликта:</p>
51 <p>Маркеры разрешения конфликта:</p>
52 &lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD:index.html Everything above the ==== is the version in master. ======= Everything below the ==== is the version in the test branch. &gt;&gt;&gt;&gt;&gt;&gt;&gt; test:index.html<p>В этом блоке надо заменить всё на версию, которую хотите оставить, после чего подготовить файл. Разрешив все конфликты, можно завершать слияние, используя git commit.</p>
52 &lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD:index.html Everything above the ==== is the version in master. ======= Everything below the ==== is the version in the test branch. &gt;&gt;&gt;&gt;&gt;&gt;&gt; test:index.html<p>В этом блоке надо заменить всё на версию, которую хотите оставить, после чего подготовить файл. Разрешив все конфликты, можно завершать слияние, используя git commit.</p>
53 <h2>Перемещение</h2>
53 <h2>Перемещение</h2>
54 <p>Осуществляется вместо совмещения 2-ух веток коммитом слияния. Перемещение заново воспроизводит коммиты тематической ветви в виде набора новых коммитов базовой ветви, что обеспечивает более чистую историю коммитов.</p>
54 <p>Осуществляется вместо совмещения 2-ух веток коммитом слияния. Перемещение заново воспроизводит коммиты тематической ветви в виде набора новых коммитов базовой ветви, что обеспечивает более чистую историю коммитов.</p>
55 <p>Чтобы выполнить перемещение, используют команду git rebase &lt;основная ветка&gt; &lt;тематическая ветка&gt;. Она воспроизводит изменения тематической ветви на основной. При этом HEAD тематической ветви указывает на последний воспроизведённый коммит.</p>
55 <p>Чтобы выполнить перемещение, используют команду git rebase &lt;основная ветка&gt; &lt;тематическая ветка&gt;. Она воспроизводит изменения тематической ветви на основной. При этом HEAD тематической ветви указывает на последний воспроизведённый коммит.</p>
56 <p>Совет: перемещайте изменения лишь на вашей приватной локальной ветке. Не стоит перемещать коммиты, от которых ещё кто-то зависит.</p>
56 <p>Совет: перемещайте изменения лишь на вашей приватной локальной ветке. Не стоит перемещать коммиты, от которых ещё кто-то зависит.</p>
57 <p>Если хотите<strong>откатить коммит</strong>: - git revert &lt;коммит&gt; - создаёт новый коммит, который отменяет изменения, но сохраняет историю; - git reset &lt;коммит&gt; - перемещает указатель HEAD, и создаёт более чистую историю, как будто коммита никогда не было. Но это также значит, что вы не сможете вернуться обратно к изменениям, если решите, что отмена была лишней. В общем, чище - не значит лучше!</p>
57 <p>Если хотите<strong>откатить коммит</strong>: - git revert &lt;коммит&gt; - создаёт новый коммит, который отменяет изменения, но сохраняет историю; - git reset &lt;коммит&gt; - перемещает указатель HEAD, и создаёт более чистую историю, как будто коммита никогда не было. Но это также значит, что вы не сможете вернуться обратно к изменениям, если решите, что отмена была лишней. В общем, чище - не значит лучше!</p>
58  
58