Что означает объединение хх в ххх

В моем репозитории есть одна ветка (branch_1), и в ней я вношу некоторые изменения. Затем я создал новую ветку из ветки_1, ветки_2.

Master---
         \
          Branch_1--commit1--commit2
                                   \
                                    Branch_2 (current branch) 

Тем временем в Branch_1 был проведен обзор и я внес некоторые изменения:

  Master---
             \
             Branch1--squashed commit1,commit2--commit3--commit4
                                       \
                                        Branch2 (current branch)

Как мне теперь применить последние изменения ветки_1 в ветке_2? Что означает объединение ветки_1 с веткой_2 и наоборот.

«Объединить» ничего не значит. Есть только «слияние», а затем «перебазирование». Обратите внимание, что ваше ASCII-изображение не может отражать фактическую историю Git, поскольку сжатие двух коммитов не повлияет на другие ветки.

knittl 13.06.2024 16:50

Обратите внимание: то, что вы называете Branch_1, на самом деле будет commit2, поскольку метка Branch_1 идентифицирует фиксацию как заголовок ветки и обновляется каждый раз, когда вы фиксируете ветку.

chepner 13.06.2024 17:14
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
104
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

Однако слияние Branch1 с текущей веткой (Branch2) сделает то, что вы хотите.

Что означает объединение ветки_1 с веткой_2 и наоборот.

Это означает перенос всех изменений из одной ветки в другую. Порядок важен, именно он определяет, в какую ветку вы пишете.

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

# integrating new changes into branch_1
git checkout branch_1
git pull

# integrating branch_1' changes into branch_2
git checkout branch_1
git rebase branch_1

Эта операция по сути перезапишет поверх branch_1 каждую фиксацию, сделанную branch_2 после расхождения. Таким образом, новые изменения в branch_1 будут присутствовать в branch_2, с более линейной историей, чем при слиянии двух ветвей взад и вперед (это предполагает, что branch_2 будет объединено в branch_1 или ветку master в какой-то момент).

Вместо этого, что касается вашего второго вопроса:

Что значит объединить ветку_1 с веткой_2 и наоборот?

Слияние просто означает объединение двух или более историй изменений с момента их расхождения. Коммит слияния, созданный после операции, становится узлом, из которого вы можете ссылаться на родительские истории в графе коммитов, что позволяет вам видеть изменения из другой ветки (branch_1) в вашей целевой ветке (branch_2). Цитируем документацию по команде git merge.

Включает изменения из именованных коммитов (с момента, когда их история отклонилась от текущей ветки) в текущую ветку.

Также этот подход позволит вам внести изменения branch_1 в branch_2. Однако, как было сказано ранее, история будет выглядеть более запутанной и менее читабельной.

git checkout branch_1
git pull

git checkout branch_2
git merge branch_1

Другие вопросы по теме