Git не обнаруживает различий при слиянии ветки с мастером - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь изучить git с помощью фиктивного проекта, и я столкнулся с проблемой. Я пытался удалить файл из моего репо, чтобы он не отображался на моей странице репозитория github. Поэтому я удалил файл в основной ветке и передал изменения. Затем я обнаружил проблему и хотел вернуться. Я проверил свой коммит в новой ветке git checkout -b <branch-name> <commit hash>. Пока все хорошо, я даже получил файл, который я удалил обратно в мои папки. Теперь мне просто нужно объединить это с моей основной веткой, чтобы в ней тоже был удаленный файл. Однако, когда я делаю git checkout master, а затем git merge <branch-name>. Это просто говорит о том, что ветка уже обновлена, хотя я явно не вижу удаленный файл, когда нахожусь в основной ветке. Я пытался зафиксировать изменения в этой только что созданной ветви, как указано в комментарии ниже, однако это просто говорит о том, что ветка уже обновлена ​​и рабочее дерево ясно.

Я немного озадачен этими действиями и, возможно, сделал что-то не так. В чем проблема, и как мне ее решить и избежать в будущем?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Как упомянуто в одном из комментариев, Git не видит никакой разницы в двух ветвях, поскольку коммит уже существует в основной ветке.

Похоже, ваш вариант использования - это revert с коммитом, который вы ранее сделали в главной ветке. Таким образом, вы должны быть в состоянии сделать следующее:

  • git checkout master
  • Найти идентификатор коммита, в котором был удален файл. (используйте git log для того же самого)
  • git revert <commit_id>

git revert подготовит новый фиксированный коммит , удаляющий все изменения, сделанные в этом commit_id, и этот коммит может быть непосредственно передан или объединен с главной веткой.

0 голосов
/ 27 декабря 2018

Создание ветки из более старого коммита не будет достаточным для его объединения, учитывая, что упомянутый более старый коммит уже является частью master истории.

Если вы хотите получить файл из более старого коммита, одним из простых обходных путей будет:

...