Git Merge сообщает "Уже в курсе", хотя есть разница - PullRequest
230 голосов
/ 11 марта 2009

У меня есть git-репозиторий с 2 ​​ветками: master и test.

Существуют различия между основной и тестовой ветками.

В обеих ветвях зафиксированы все изменения.

Если я это сделаю:

git checkout master<br>
git diff test

Появится полный экран изменений, показывающий различия. Я хочу объединить изменения в тестовой ветке и также:

git merge test

Но получите сообщение "Уже актуально"

Однако проверка файлов в каждой отдельной ветке четко показывает различия.

В чем здесь проблема и как мне ее решить?

Ответы [ 14 ]

2 голосов
/ 13 марта 2015

Если при слиянии ветви A с веткой B появляется сообщение «Уже обновлено», обратное не всегда верно. Это верно, только если ветвь B является потомком ветви A, в противном случае ветка B просто может иметь изменения, которых нет в A.

Пример:

  1. Вы создаете ответвления А и В от мастера
  2. Вы вносите некоторые изменения в master и объединяете эти изменения только в ветке B (не обновляя или не забывая обновить ветку A).
  3. Вы вносите некоторые изменения в ветку A и объединяете A с B.

В этот момент при слиянии A с B появляется сообщение «Уже обновлено», но ветви отличаются, потому что ветвь B имеет обновления от master, а ветка A - нет.

1 голос
/ 11 октября 2018

Обязательно сначала извлеките ветку, которую хотите объединить, а затем вытяните ее (чтобы ваша локальная версия соответствовала удаленной версии).

Затем вернитесь в свою ветку, в которой вы хотите выполнить слияние, и ваш git merge должен сработать.

0 голосов
/ 19 ноября 2018

У меня была такая же проблема. У меня были изменения в пульте, и он все еще показывал «Уже в курсе». Повторное использование хранилища решило проблему для меня.

0 голосов
/ 17 декабря 2014

То же самое случилось со мной. Но сценарий был немного другой, у меня была мастер ветка, и я вырезал release_1 (скажем) из него. Сделал некоторые изменения в ветке release_1 и объединил ее в origin. тогда я сделал ssh и на удаленном сервере Я снова извлекаю release_1 с помощью команды git checkout -b release_1, которая фактически создает новую ветвь release_! от мастера, а не проверять уже существующую ветку release_1 из источника. Решил проблему, убрав ключ "-b"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...