Слияние в семье или как вернуть Себя себе и наладить отношения
А бывает так в вашей Семье, что кто-то имеет бОльшую важность, чем вы? И только он/она (ребенок, партнер, родитель) имеет значение. Вы идете в магазин за чем-то необходимым для себя, а там столько всего, чтобы порадовать любимого/любимую. И вы обнаруживаете себя с покупкой для самого важного человека в своей жизни, забыв свои потребности. Зато он/она обязательно обрадуется и оценит. А когда ожидания не оправдываются, злитесь и негодуете, ведь вы же все для него/неё делаете.
Возможно, часто задаете себе вопрос о том, почему любимый/любимая не догадались, что вы почувствовали и какой на самом деле хотели подарок.
Его/её интерес действительно стоит внимания, а ваши какие-то скучные. Вот у него/неё действительно стоящие проблемы на работе или учебе, и вы, засучив рукава, беретесь их исправлять, хоть вас об этом и не просили.
А может ловите себя на мыслях, что не понимаете, кто вы и чего хотите? Или когда важного человека нет рядом, внутри ощущение пустоты и щемящей тоски?
Семья — это самое значимое или то, что вы всегда хотели. И ради счастья быть вместе готовы отдать все. Когда-то отказались от перспективной должности, так как далеко от дома и самых близких людей. Как они без вас?
Очень важно, чтоб в Семье все были здоровы, и вы волнуетесь за каждое малейшее недомогание близких. Бегаете по врачам, договариваетесь о приемах, покупаете лекарства. А то, что у вас третий день невыносимо болит спина, вы почти не замечаете. Думаете, что ничего страшного, само пройдет. Ведь главное они.
Или вы счастливы, когда выходите в гости всей Семьей, а отдельно всегда чувствуете неуверенность. Не можете ответить себе на вопрос: “Кто вы без них?”
И верите, что Семья обязательно оценит ваши жертвы, вашу самоотверженность. Оценит и скажет “Спасибо”, но этого не происходит или очень редко. А ваше мнение в Семье постепенно теряет вес.
Как же так? Почему не видят и не ценят? Вы же так стараетесь. Ведь вы все ради них и только ради них все делаете.
Может быть и наоборот. Семья за вас горой. Близкие люди стараются угадать малейшее ваше желание. Всегда уверены, что знают, что вы хотите, какой у Вас вкус и что вы любите. Принимаются обсуждать и решать ваши проблемы, хотя вы об этом и не просите. А если не получают благодарности, чувствуют себя обиженными. Ведь все это для вас! Они так хотели помочь и позаботиться о вас.
Семье просто необходимо знать в подробностях все, что с вами происходит, включая самые интимные сферы. А если вы стесняетесь или не хотите что-то рассказывать, то искренне удивляются и недоумевают: “Почему”? “Мы же Семья”! Как будто близкие живут вашей жизнью и вы должны давать им пищу для эмоций.
Вам сложно остаться наедине с собой, так как в доме вашей Семьи практически нет таких мест, куда не может войти в любой момент ваш близкий.
И иногда вы чувствуете себя в ловушке в вашем доме, иногда злитесь на них и на постоянное местоимение “Мы”, которое произносят близкие в любом разговоре.
Что происходит в отношениях?
Такой феномен в психологии получил название слияние. Отсутствуют границы между “Я” и “не-Я”, между личностью и партнером/семьей. Этот механизм появился не просто так. Например, слияние мамы с младенцем помогает понять потребности малыша, пока он сам не может попросить что-то. А как сладостно переживается единение с любимым в начале отношений.
В этом состоянии много преимуществ. Например, ощущение защищенности. Порой в доме так хорошо, тепло и безопасно, не то, что во внешнем мире. И вы счастливы быть вместе и чувствовать единение с Семьей. Здесь не существует одиночества.
Когда вы одно целое, то у вас как-будто нет конфликтов, так как “Мы” согласны друг с другом во всем. При этом ответственность за выбор тоже тогда одна на всех. Это может быть очень удобно.
Но за эти ощущения приходится платить немалую цену:
- В слиянии нет настоящего контакта с реальным человеком, нет настоящей близости между людьми. Существует иллюзия близости. При этом сам факт отсутствия контакта не осознается. Часто из отношений уходят новизна, яркость ощущений, интерес, а остается привычка. Между супругами, живущими в сильном слиянии, пропадают интимные отношения и сексуальное желание или секс — это единственное, что связывает супругов.
- Человеку, который как бы слит с другим, очень трудно определить, что же он чувствует и ощущает в теле. Часто в его семье эмоции выражаются бурно и сразу, без оглядки на последствия для отношений.
- В этом состоянии сложно понять и заметить свои потребности, сложно ощутить свою отдельность от объектов слияния. Тогда потребности остаются неудовлетворенными, а внутри копится раздражение, обида. Кроме того, не понимая свои потребности и не понимая себя, сложно расти над собой, невозможно ставить себе цели и идти к ним.
- Изменения в другом пугают того, кто в слиянии, какие бы эти изменения не были. Эти перемены не замечаются или им препятствуют. В такой семье сложно развиваться.
- В отношениях нет свободы воли. Сложности в том, чтобы брать ответственность за себя или сверхответственность за других.
- Cлияние — это основная причина крушения брака. Семьи в слиянии менее устойчивы к стрессам. В таком браке труднее приспособиться к изменениям. Члены семьи больше подвержены болезням, между ними много тревоги.
- Потеря, будь-то смерть или расставание с объектом слияния, воспринимается как потеря Себя. Переживание горя в таких отношениях затягивается. Очень сложно оправиться и двигаться дальше.
Что же можно с этим сделать?
Сделать осознанный выбор: готовы ли вы что-то менять или вас все устраивает? Возможно, в данный период жизни вам нужны именно такие отношения, но не забывайте о том, что тогда теряете.
Если вы стремитесь к изменениям, а жить так, как раньше, уже невозможно, то будьте готовы, что процесс выхода из слияния может оказаться непростой и небыстрый. Скорее всего семья будет сопротивляться изменениям и тянуть вас обратно в прежние отношения.
Начать с самого начала, то есть с родителей
Важно, если есть такая возможность, наладить отношения со своей родительской семьей. Способ, с помощью которого супруги организовывают свои отношения друг с другом и с детьми, заимствуется из их родительской семьи (или семьи значимых воспитателей), включая братьев и сестер. Если отношения с родительской семьей меняются, это ведет и к изменениям в браке. Новые способы автоматически применяются и с другими близкими.
Способы, такие как закрыться эмоционально на одной бытовой территории или разорвать отношения и уехать подальше, не работают. Хотя это может временно снизить тревогу. Но тогда у вас всегда будет потребность завершить отношения с родителями, выбирая на их место кого-то, будь-то супруг\супруга, друг\подруга или даже начальник.
Мюррей Боуэн, психиатр и психотерапевт, который разрабатывал свою систему и методику работы с семьей в процессе психотерапии, предлагал своим ученикам, будущим семейным психотерапевтам, несколько рекомендаций, как наладить отношения с их родительской семьей. Результаты превзошли все ожидания автора. Во-первых, ученики, которые стремились выполнить рекомендации, добились неплохих результатов в процессе улучшения отношений с семьями, из которых произошли. Во-вторых, показывали лучшие результаты работы с семьями клиентов.
Это были следующие рекомендации:
1. Постараться выстроить эмоциональный контакт (понимание и принятие каждым из членов семьи друг друга как личностей) с каждым из родителей один на один. Очень важно, чтобы это был контакт между двумя людьми, а не между родителями и ребенком или родителями и супружеской парой взрослого ребенка.
2. Стремиться к позиции наблюдателя вместе с контролем эмоциональной реакции. Я не верю, что можно вообще эмоционально не включаться в семейные процессы, но можно постараться посмотреть на ситуации со стороны, сконцентрироваться на понимании того, что происходит в семье. Взгляд со стороны помогает лучше контролировать свои эмоции.
3. Не принимать ничьей стороны в семейном споре, то есть не присоединяться к одному из родственников. Делать это лучше в период, когда семья в стрессовой ситуации или в сильной тревоге.
Затем пользоваться этими же способами в отношениях с супругом\супругой и с детьми.
Постепенно возвращать Себя себе или развитие индивидуальности
1. Предлагаю вам учиться говорить только за себя, замечая местоимение “Мы”. Осознавать, если хочется говорить за всех женщин или мужчин, или за другую значимую группу, включая семью. Формулировать свою личную позицию и взгляд на ситуацию. Постараться при этом опираться на себя и свой опыт, без оглядки на значимую личность, умную статью, мнение большинства.
2. Будьте внимательны к различиям. Чем вы отличаетесь от других членов семьи? Что именно вы любите есть? Что любите делать?
3. Важно понимать, что с вами происходит. Старайтесь замечать свои чувства, ощущения в теле. Искать для своих эмоций подходящую форму выражения. Это может быть разговор о том, как вы реагируете на слова и действия партнера/родителя/ребенка. Мне кажется, это должен быть именно ваш творческий процесс. Советы, как лучше делать, здесь могут не работать, так как не учитывают вашу ситуацию и вашу особенность личности.
4. Брать на себя ответственность за свои действия. Для меня это про продумывание последствий за сделанный выбор и принятие того, что они принадлежат мне. При этом не делать то, что другой может сделать сам. Особенно, если вас не просят о помощи.
Мне кажется, что не нужно стремиться полностью избавиться от слияния в семье. Человеку важно ощущать себя отдельным и чувствовать свою принадлежность. Хорошо когда этот процесс получается сделать осознанным: есть возможность выбирать с кем и когда войти в слияние, а когда вернуться к себе.
Записаться на консультацию к психологу
Подписаться на наш Youtube
Наши статьи на Яндекс Дзен
Слияние с Шивой
Воскресенье
УРОК 203
Идите уверенно
Есть люди, которые просто следуют за чужими стереотипами полей одической силы. Они не понимают своего актинического предназначения, потому что никогда не были способны пробиться своей актинической силой через преграды силы одической. Свое актиническое предназначение нашли те, кто выделяется среди массы и действительно что-то делает, живет творчески на благо другим. Актиническая сила созидает при прохождении через область подсознания, но она либо свободно струится вверх, либо направляется наружу. Одическая сила — это удерживающая сила, вязкий вид энергии.§
Проходите через одические силовые поля, не будучи замечены ими. Те, кто пробудил свои под-сверхсознательные энергии, часто становятся энергичными и деятельными людьми, и весьма часто — немного эгоистичными. Тем не менее, более глубокая под-сверхсознательная черта — смирение. Смирение само по себе является энергией под-сверхсознательного разума, которая дает способность проходить через одические силовые поля незамеченным.§
Из-за природы одических сил (из которых состоит сознательный и подсознательный разум людей, а также города, государства и круговорот различных событий этого мира) поток актинической силы может (или мог бы) вызывать возмущение определенных силовых полей. Иногда (как свидетельствует вся история) последствия такого вмешательства могут быть катострофическими. Поэтому полагайтесь на свое под-сверхсознательное знание и энергии как на внутренний механизм, которым можно пользоваться сознательно. Не выставляйте напоказ свою под-сверхсознательную энергию, ибо одичесие силовые поля зависти и страха могут быть направлены против вас. Учитесь жить в мире одической силы, не привлекая при этом внимания, и, в то же время, сознательно используя свой под-сверхсознательный разум, вносите вклад в создание и поддержание красоты мира.§
Вся красота пришла к нам благодаря действию пробужденных в человеке под-сверхсознательных энергий. Пусть ваша жизнь будет яркой благодаря вашим поступкам, а не от рекламы своих под-сверхсознательных энергий. Нет гордости, от которой было бы так же трудно избавиться, как от духовной гордыни. Обладая способностью управлять актинической силой, которая действует через подсознательный разум, можно легко создать в подсознательном разуме еще более мощную одическуюя структуру.§
Однако теперь, после достижения определенной степени духовного развития, возможен другой путь сознательного использования под-сверхсознательных энергий. Если вы знаете, каким должен быть следующий поступок, или что необходимо сказать, то можно сделать вывод, что это и есть работа вашего под-сверхсознательного разума. Будьте уверены в себе, пребывайте в сознании вечности настоящего момента времени. Вбирайте в себя отклик групп людей или тех, с кем вы разговариваете. Когда ваш подсознательный разум воспринял этот отклик, ощутите динамическую вечность настоящего момента, и вы будете знать именно то, что нужно сказать или сделать в соответствующей ситуации. Это и будет сознательное использование ваших под-сверхсознательных сил.§
Самое важное, чему должен научиться ученик — понять, что все знание заключается в нем самом. Поэтому отправляйтесь в свой университет, в прекрасную школу под-сверхсознания, и обретите знание. Для этого необходимо быть уверенным в себе. Чтобы быть уверенным в себе, ничего не бойтесь. Для того, чтобы ничего не бояться, скажите себе: «Со мной все в порядке, прямо сейчас». Данная установка быстро переместит вас в сознание вечности мгновения. Вы подсознательно почувствуете, как актиническая сила пронизывает тело, и ваше под-сверхсознательное состояние разума станет активным. Поэтому идите вперед, будучи полностью уверенными, что вы обладаете всем знанием, которое существует во Вселенной. §
§
Итак, вы объединили себя · GitHub
Итак, вы объединили ветку master с самой собой, и в итоге вы получили никому не нужный коммит слияния.
Проблема
Позвольте мне рассказать вам небольшую историю…
Джон и Пит вместе работают над репо.
$ git log --graph --pretty=oneline --abbrev-commit # псевдоним, который у меня есть под 'git lol', но 'gitk' работает нормально * 812492b (мастер, источник/мастер, источник/ГОЛОВА) Добавить материал * 474c16e Я многое * 12b7661 Я Единорог!
Пит хочет внести некоторые изменения и клонирует репозиторий/извлекает эти изменения. У него такая же история.
Между тем, Джон продолжает работать, опираясь на это, и продвигает свои изменения. Пит также вносит некоторые изменения, не потянув сначала.
*1c12c15 (ГОЛОВА, мастер) 123 * 8ee7d24 Делай что-нибудь * d4f7393 Ву * 812492b (origin/master, origin/HEAD) Добавить материал * 474c16e Я многое * 12b7661 Я Единорог!
Когда придет время поднажать. ..
$ гит пуш ! [отклонено] master -> master (сначала получить) ошибка: не удалось отправить некоторые ссылки на '/home/jon/dev3/foo' подсказка: обновления были отклонены, потому что удаленный содержит работу, которую вы делаете подсказка: нет локально. Обычно это вызвано отправкой другого репозитория. подсказка: к тому же исх. Вы можете сначала интегрировать удаленные изменения подсказка: (например, «git pull ...») перед повторным нажатием. подсказка: см. «Примечание о быстрой перемотке вперед» в «git push --help» для получения подробной информации.
Итак, он делает то, что велено. Он тянет (и таким образом получает статус происхождения
)
$ мастер происхождения git pull * мастер ветки -> FETCH_HEAD Уже актуально! Слияние по «рекурсивной» стратегии. * 1654d53 (HEAD, master) Объединить ветку master из /home/jon/dev3/foo |\ | * 57b81dc (источник/мастер, источник/ГОЛОВА) Мля | * 1794a9f Делать другие вещи | * a235abc Исправьте ещё * | 1c12c15 123 * | 8ee7d24 Делай что-нибудь * | d4f7393 Ву |/ * 812492b Добавить материал * 474c16e Я многое * 12b7661 Я Единорог!
Git предлагает выполнить слияние, и рождается уродливый коммит слияния.
Пояснение
Поскольку Пит не вытащил изменений перед фиксацией, он зафиксировал их поверх старой фиксации ( 812492b
),
тот, на который Джон уже опирался. Действительно, Джон построил a235abc
, 1794a9f
и т. д. поверх него.
Если бы Пит вытащил перед фиксацией, его ветка master
была бы обновлена до 57b81dc
, а вместо
на 812492b
, d4f7393
были бы построены поверх этого (с другим SHA фиксации).
В Git родитель коммита имеет большое значение, так как это то, на чем коммит основывает свои изменения. И поэтому, когда мы говорим, что меняем коммит и кладем его на другую базу, мы rebas ing.
Причина, по которой origin
не принял изменения Пита, 1c12c15
, заключается в том, что 1c12c15
не был потомком origin
.
Другими словами, не было очевидного пути для origin
перейти со своей позиции, 57b81dc
, на нажатую
позиция, 1c12c15
. Следовательно, толчок был отклонен.
Сделав фиксацию слияния, 1654d53
, Git предложил Питу создать дочерний элемент origin
с собственной историей Пита.
(Романтично, я знаю!)
Теперь мы должны отменить это перед отправкой чистой истории.
Средство
Стратегия здесь заключается в том, чтобы вместо коммитов Джона и Пита иметь одного и того же родителя ( 812492б
),
мы собираемся основывать коммиты Пита на основе коммитов Джона.
Мы будем использовать следующие инструменты:
git reset
перематывает ветку на другой коммит.
git rebase
перебазирует висячую ветку поверх другой.
Давайте разберемся в ситуации.
$ гит лол * 1654d53 (HEAD, master) Объединить ветку master из /home/jon/dev3/foo |\ | * 57b81dc (источник/мастер, источник/ГОЛОВА) Мля | * 1794a9f Заниматься другими делами | * a235abc Исправьте ещё * | 1c12c15 123 * | 8ee7d24 Делай что-нибудь * | d4f7393 Ву |/ * 812492b Добавить материал * 474c16e Я многое * 12b7661 Я Единорог!
Перво-наперво, мы должны вернуть нашу ветку туда, где она была, в верхней части изменений Пита ( 1c12c15
). Это то, что он пытался протолкнуть.
$ git reset --hard 1c12c15 HEAD теперь на 1c12c15 master * 1c12c15 (ГОЛОВА, мастер) 123 * 8ee7d24 Делай что-нибудь * d4f7393 Ву * 812492b Добавить материал * 474c16e Я многое * 12b7661 Я Единорог!
(Мы использовали переключатель --hard
, потому что нас не волновали остатки. Сброс --mixed
или --soft
сохранил бы измененные файлы в рабочем дереве.)
Мы только что отменили фиксацию слияния. Кроме того, в качестве побочного эффекта git pull
наш Git теперь знает, где находится origin/master
,
что полезно, поэтому мы можем видеть это в наших журналах.
Если мы просто хотим знать, где находится удаленный компьютер, git fetch
будет там в следующий раз вместо тянуть
. Что подводит нас к…
Где мы были
Теперь нам нужно перебазировать наши коммиты, основанные на 812492b
, как вы видите, и изменить эту базу на 57b81dc
, также известную как origin/master
.
Команда rebase
изменяет ветку, в которой мы находимся ( master
), чтобы получить то, что мы даем в качестве аргумента. Поскольку мы хотим, чтобы master
(Pete’s) располагался поверх origin/master
, мы дадим ему это.
$ git rebase origin/master Во-первых, перемотка головы, чтобы воспроизвести свою работу поверх нее... Применение: Ву Подача заявки: делай что-нибудь Подача заявок: 123 * b330a1c (ГОЛОВА, мастер) 123 * 15e4ded Делай что-нибудь * 8bfd53a Ву * 02f75fc (источник/мастер, источник/ГОЛОВА) foo * 57b81dc Бла * 1794a9f Делать другие вещи * a235abc Исправьте ещё * 812492b Добавить материал * 474c16e Я многое * 12b7661 Я Единорог!
А вот и мы! Теперь у нас есть линейная история!
Наши коммиты теперь являются потомками origin/master
и линейный.
Примечание. Я немного схитрил в своей оболочке, чтобы получить наглядную историю, поэтому тут и там могут быть ошибки. Исправления/улучшения приветствуются!
Проверяет ли git pull текущую ветку после слияния/перебазирования?
Короткий ответ — «нет», и это на самом деле полный и технически правильный ответ, но немного неудовлетворительный и, вероятно, вводящий в заблуждение: во всех хороших случаях конечное состояние , как если бы git сделал проверку. Тем не менее, вы можете остановиться здесь, если хотите. 🙂
Длинный ответ немного длинный и усложняется в современных версиях git, потому что вы можете настроить git rebase
на «autostash». Но мы снова возвращаемся к тому факту, что git pull
запускает git fetch
, за которым следует либо git merge
, либо git rebase
.
Шаг
fetch
проще, потому что ему не нужно знать или заботиться о рабочем каталоге. Он связывается с названнымremote
(взято из веткитекущей ветки. $branch . remote
, если вы ее не указали), дает этому удаленному узлу некоторые refspec(ы) (из дополнительных аргументов, которые вы передали, или из вашей конфигурации, если вы ничего не прошло) и по мере необходимости переносит коммиты и другие объекты с удаленного компьютера. Эти коммиты и другие объекты помещаются в хранилище в вашем репозитории, где они находятся в безопасном месте, но доступны в любое время. Некоторые названия веток «удаленного отслеживания» могут быть обновлены, и в любом случае перенесенные главы веток помещаются в специальный список 9.0023 FETCH_HEAD (в частности,FETCH_HEAD
получает идентификаторы SHA-1, соответствующие каждому названию заголовка ветви).Чтобы увидеть полное сопоставление имени/идентификатора SHA-1 в действии, запустите
git ls-remote remote
(например,git ls-remote origin
). Это связывается с удаленным и получает от него ту же информацию, что иgit fetch
, а затем распечатывает ее в командном окне. Он не вносит никаких изменений во что-либо еще, поэтому он просто использует немного пропускной способности сети, и, на мой взгляд, это довольно познавательно. (Если на удаленном компьютере много ветвей и тегов, вам может потребоваться прокрутить вперед и назад, чтобы увидеть весь вывод, или сохранить вывод в файл или что-то еще.)Шаг
слияния
илиперебазирования
представляет собой сложный момент. Давайте выйдем из вложения и рассмотрим два. Давайте также рассмотрим только случай слияния с одной целью (т. е. обычное повседневное слияние, а не одно из причудливых слияний осьминогов git).
Если вы начнете с чистого рабочего дерева (и индекса), будет намного проще описать, что сейчас происходит. Давайте для начала предположим чистое рабочее дерево.
9Шаг 0023 fetch привел к некоторым фиксациям. слияние
или перебазирование
находит соответствующую базу слияния или место назначения перебазирования, а затем выполняет либо слияние, либо перебазирование, как указано:
Для слияния git находит базу слияния. Обычно это один конкретный коммит. (В некоторых случаях есть несколько кандидатов на базу слияния, и git их тоже обрабатывает, но давайте не будем о них беспокоиться.) Вы можете думать об этом как о точке, в которой ваша ветка и другая ветка расходятся:
<--старее--время увеличивается по мере продвижения вправо--новее--> [см. сноску 1] o - o <-- ваша ветка (мастер) / ... - о - * \ o - o - o <-- их ветвь (происхождение/хозяин)
На этой диаграмме каждый маленький узел
или
обозначает фиксацию. База слияния — это коммит, отмеченный*
вместоили
. Самая правая фиксация вашей веткиmaster
— самая праваяили
в верхней строке, а самая крайняя фиксация их веткиorigin/master
— самый правыйили
в нижней строке.Назовем самый верхний коммит вашей ветки
A
, просто для конкретности. (У него есть свой уникальный идентификатор SHA-1 и это его «настоящее имя», но давайте просто назовем егоA
. ) Давайте назовем базу слиянияB
и вершину их ветвиC
и перерисуем эту диаграмму. :o - A <-- ваша ветка (мастер) / ... - о - Б \ o - o - C <-- их ветвь (происхождение/хозяин)
Чтобы выполнить слияние (когда требуется слияние), git запускает diff между commit
B
и commitA
, как если бы вы сделалиgit diff B A
(заполняя фактический SHA-1 дляB
иКонечно же,
; и он использует внутреннюю версию своего кода сравнения, а не просто считывает текстовый выводgit diff
). Этот diff сообщает git, «что вы изменили», начиная с общей базыB
.Далее git запускает
git diff B C
(конечно, опять внутренний формат). Этот diff сообщает git, «что они изменили» по сравнению с той же общей базой.Наконец, git пытается объединить два различия. Если вы добавили файл, а они нет, git сохранит ваш добавленный файл. Если вы изменили написание
, соседний
, на, соседний
в файлеREADME
, а они этого не сделали, это сохранит ваше изменение. Если они удалили файл, который вы не трогали, или удалили строку из файла, который вы не трогали, git сохранит их изменения. Если вы оба сделали точно такое же изменение наweather.h
, git сохраняет одну копию этого изменения (а не две копии). Git применяет все «сохраненные» изменения к базовой версии и записывает результат в ваше рабочее дерево, и теперь слияние выполняется без конфликтов слияния. Результат, по мнению git, готов к фиксации. (Обратите внимание, что это верно, даже если какое-то изменение, которое вы сделали, требует, скажем, чтобы система сохранила файл, который они удалили, который теперь удален git. То есть, предположим, они сказали: «О, смотрите, этот файл не используется, давайте удалим это" и вы сказали "ой, ой, я забыл использовать этот файл, давайте использовать его". Git не знает, что эти изменения на самом деле конфликтуют: все, что он может сказать, это то, что строки в diff не конфликтуют.)Следующий шаг зависит от того, указали ли вы флаг
--no-commit
. 2 Это подавляет фиксацию, несмотря ни на что. Если вы не подавили фиксацию,git merge
фиксирует этот набор изменений без явного конфликта как «фиксацию слияния», которая имеет двух родителей:o - A ----- M <-- ваша ветка (мастер) // ... - о - Б / \ / o - o - C <-- их ветвь (происхождение/хозяин)
На данный момент рабочее дерево соответствует новому коммиту
M
. Хотя он не был проверен из , он был проверен в (зафиксирован) как слияние.Если вы сказали
--no-commit
, или если возник конфликт слияния, слияние останавливается и вам остается исправить и/или зафиксировать слияние. Изменения просто присутствуют в вашем рабочем каталоге. Если и когда вы решите зафиксировать результат, это будет фиксация слияния. Git знает об этом, потому что он оставляет файл трассировки со словами «в середине слияния». Если вы решили отменить слияние сgit merge --abort
, который удаляет файл трассировки.Для перебазирования git выполняет аналогичный процесс. Однако вместо поиска базы слияния он находит набор ваших коммитов, которых нет в восходящем потоке. Мы можем нарисовать эту диаграмму еще раз, но давайте использовать другие имена узлов:
.A - B <-- ваша ветка (мастер) / ... - о - о \ C - D - E <-- их ветвь (происхождение/хозяин)
В этом случае git находит два ваших коммита (
A
иB
) и копирует их (используяgit cherry-pick
, более или менее). Механизм для этого потенциально сложен, поэтому давайте просто отметим здесь, что каждая операцияCherry Pick
требует обновления вашего рабочего дерева и создания новой фиксации. Если все пойдет хорошо, мы назовем копиюA
,A'
, а копиюB
B'
; git перемещает имя ветки так, чтобы оно указывало наБ'
; и окончательный рисунок выглядит так:А - Б [заброшенный] / ... - о - о А' - Б' <-- ваша ветвь \ / C - D - E <-- их ветвь
Поскольку каждый шаг выбора вишни обновляет ваше рабочее дерево и делает из него фиксацию, ваше рабочее дерево соответствует окончательной фиксации
B'
не потому, что оно было проверено из , а потому, что оно было проверено в ( commit), точно так же, как и в случае слияния.
Если вы начинаете с грязного рабочего дерева (или "грязного индекса", т. е. любых изменений, которые не регистрируются), это немного сложнее описать, но не слишком. У нас все те же два случая:
Для слияния git по-прежнему попытается объединить ваши изменения и их изменения, но он попытается сделать это, сохраняя при этом ваши дополнительные незафиксированные изменения. Если это удается, он делает фиксацию из результата, как обычно, если только не подавляется, как обычно. Если это не удается, он останавливается, как обычно, и оставляет вас наводить порядок.
Преимущество этого заключается в том, что иногда вы можете создать работающее слияние, даже если слияние из чистого рабочего дерева не удастся. Плохая сторона этого заключается в том, что очень легко сделать это случайно, когда вы этого не хотели, и в конечном итоге ваши изменения смешаются с их изменениями, и очень трудно отказаться. Как правило, это просто плохая идея: зафиксировать или спрятать, а затем слить из чистого состояния, возможно, с
--no-commit
, если хотите. Затем вы можете запустить тесты и сделать свою собственную фиксацию после внесения каких-либо исправлений. (Обратите внимание, что вы также можете использоватьgit commit --изменить
при фиксации слияния.)Обычно для перебазирования
git rebase
просто отказывается запускаться, если рабочее дерево не очищено. Это делает этот случай легким. Однако, начиная с git 1.8.4,rebase
теперь имеет настраиваемую настройкуrebase.autostash
. Если вы установите это, вашrebase
будет запускатьgit stash
для вас в этом случае, затем выполните перебазирование, затем (если все пойдет хорошо) извлеките тайник для вас. В этом режиме есть досадная (но не фатальная) ошибка, которая не была исправлена до git 2.0.1, и я не рекомендую его в целом — я думаю, что лучше просто сделать фиксацию контрольной точки и очистить ее на более позднем проходе очистки ( обычно хорошо пройти очистку перед «завершением» коммитов, и это время, чтобы раздавить временные контрольные точки; до тех пор они перебазируются естественным образом, без какой-либо опасности испорченных автотайников).
1 Хотя на диаграмме сказано, что «время увеличивается вправо», технически это просто то, что узлы справа являются преемниками своих узлов слева. Это особенно верно, когда вы получаете коммиты с удаленного компьютера. Временные метки в этих коммитах были сделаны на каком-то другом компьютере, и даже если вы умеете синхронизировать свой компьютер с атомными часами где-то, кто знает, верны ли их часы ? Эти временные метки могут быть полностью сломаны. Временной порядок не гарантируется, просто «вероятно».
2 Помимо --no-commit
, git merge
также принимает флаг --squash
, который имеет два побочных эффекта: (1) окончательный коммит вообще не является коммитом слияния и (2 ) после выполнения всей обычной работы для слияния git merge
останавливается без фиксации (как и для --no-commit
). То есть то, что --squash
делает внутри, - это остановить окончательный коммит , а остановить git merge
от записи этого специального файла состояния, который сообщает git, что он находится в середине слияния. Таким образом, ручная фиксация, которую вы должны сделать позже, является обычной фиксацией без слияния.