Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions book/07-git-tools/sections/advanced-merging.asc
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,27 @@
=== Продвинутое слияние

Обычно выполнять слияния в Git довольно легко.
Git упрощает повторные слияния с одной и той же веткой, таким образом, позволяя вам иметь очень долго живущую ветку, и вы можете сохранять её всё это время в актуальном состоянии, часто разрешая маленькие конфликты, а не доводить дело до одного большого конфликта по завершению всех изменений.
Git упрощает повторные слияния с одной и той же веткой. Поэтому у вас может присутствовать очень долго живущая ветка, которую можно поддерживать в актуальном состоянии, часто сохраняя её и разрешая при этом маленькие конфликты, а не доводить дело до одного большого конфликта по завершению всех изменений.

Однако, иногда всё же будут возникать сложные конфликты.
В отличие от других систем управления версиями, Git не пытается быть слишком умным при разрешении конфликтов слияния.
Философия Git заключается в том, чтобы быть умным, когда слияние разрешается однозначно, но если возникает конфликт, он не пытается сумничать и разрешить его автоматически.
Поэтому, если вы слишком долго откладываете слияние двух быстрорастущих веток, вы можете столкнуться с некоторыми проблемами.

В этом разделе мы рассмотрим некоторые из возможных проблем и инструменты, которые предоставляет Git, чтобы помочь вам справиться с этими более сложными ситуациями.
Мы также рассмотрим некоторые другие нестандартные типы слияний, которые вы можете выполнять, и вы узнаете как можно откатить уже выполненные слияния.
Мы также рассмотрим некоторые другие нестандартные типы слияний, которые вы можете выполнять, и вы узнаете, как можно откатить уже выполненные слияния.

==== Конфликты слияния

Мы рассказали некоторые основы разрешения конфликтов слияния в <<ch03-git-branching#r_basic_merge_conflicts>>, для работы с более сложными конфликтами Git предоставляет несколько инструментов, которые помогут вам понять, что произошло и как лучше обойтись с конфликтом.
Мы рассказали некоторые основы разрешения конфликтов слияния в <<ch03-git-branching#r_basic_merge_conflicts>>. Для работы с более сложными конфликтами Git предоставляет несколько инструментов, которые помогут вам понять, что произошло и как лучше обойтись с конфликтом.

Во-первых, если есть возможность, перед слиянием, в котором может возникнуть конфликт, позаботьтесь о том, чтобы ваша рабочая копия была без локальных изменений.
Если у вас есть несохранённые наработки, либо припрячьте их, либо сохраните их во временной ветке.
Таким образом, вы сможете легко отменить *любые* изменения, которые сделаете в рабочем каталоге.
Если при выполнении слияния вы не сохраните сделанные изменения, то некоторые из описанных ниже приёмов могут привести к утрате этих наработок.

Давайте рассмотрим очень простой пример.
Допустим, у нас есть файл с исходниками на Ruby, выводящими на экран строку 'hello world'.
Допустим, у нас есть файл с исходниками на Ruby, выводящими на экран строку `'hello world'`.

[source,ruby]
----
Expand Down Expand Up @@ -111,7 +111,7 @@ Automatic merge failed; fix conflicts and then commit the result.
===== Прерывание слияния

В данный момент у нас есть несколько вариантов дальнейших действий.
Во-первых, давайте рассмотрим как выйти из этой ситуации.
Во-первых, давайте рассмотрим, как выйти из этой ситуации.
Если вы, возможно, не были готовы к конфликтам и на самом деле не хотите связываться с ними, вы можете просто отменить попытку слияния, используя команду `git merge --abort`.

[source,console]
Expand Down Expand Up @@ -161,7 +161,7 @@ Merge made by the 'recursive' strategy.
Хотя Git довольно хорошо обрабатывает пробельные символы, с другими типами изменений он не может справиться автоматически, но существуют другие варианты исправления.
Например, представим, что Git не умеет обрабатывать изменения пробельных символов и нам нужно сделать это вручную.

То что нам действительно нужно -- это перед выполнением самого слияния прогнать сливаемый файл через программу `dos2unix`.
То, что нам действительно нужно, -- это перед выполнением самого слияния прогнать сливаемый файл через программу `dos2unix`.
Как мы будем делать это?

Во-первых, мы перейдём в состояние конфликта слияния.
Expand Down Expand Up @@ -354,8 +354,8 @@ hello()

В обеих сливаемых ветках в этот файл было добавлено содержимое, но в некоторых коммитах изменялись одни и те же строки, что и привело к конфликту.

Давайте рассмотрим несколько находящихся в вашем распоряжении инструментов, которые позволяют определить как возник этот конфликт.
Возможно, не понятно как именно вы должны исправить конфликт и вам требуется больше информации.
Давайте рассмотрим несколько находящихся в вашем распоряжении инструментов, которые позволяют определить, как возник этот конфликт.
Возможно, непонятно, как именно вы должны исправить конфликт, и вам требуется больше информации.

Полезным в данном случае инструментом является команда `git checkout` с опцией `--conflict`.
Она заново выкачает файл и заменит маркеры конфликта.
Expand Down
Loading