Git - конфликт объединения при удалении локального файла, но файл существует в удаленном

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

После выполнения git -merge он показывает конфликты, которые произошли.

Использование git gui показывает, что локальный файл удален, а файл удаленной ветки имеет содержимое.

Как вы прекращаете конфликты этих файлов? Есть ли простой способ использования git gui?

Большое спасибо

Ответ 1

Вы должны разрешить конфликты по своему усмотрению. Если файл действительно должен быть удален, и вы опубликуете это изменение в начале, удалите его еще раз:

git rm path/to/file

Если файл на самом деле нужно отслеживать, добавьте его (версия в дереве работ будет версией из источника):

git add path/to/file

После выполнения любого из этих действий для разрешения конфликта скопируйте слияние.

Ответ 2

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

git diff ...origin/master -- path/to/file

Если это сценарий "удалил их", и вы хотели бы увидеть изменения, чтобы вы могли применить их в другом месте, вы можете использовать:

git diff origin/master... -- path/to/file

Ответ 3

В графическом интерфейсе Git вы выбираете конфликтный файл, а затем щелкните правой кнопкой мыши по основной текстовой области, где показан конфликтный текст.

В появившемся контекстном меню вы можете выбрать "Remote" или перейти в "Локальный". Поэтому, если файл удаленно удален, вы можете выбрать "Remote" для распространения локального удаления и наоборот.

Принял меня на месяц, чтобы понять это... было бы неплохо, если бы Git GUI имел документацию...

Ответ 4

В EGit я также нашел проблемы. Мое решение было:

  • Используется представление Git Staging.
  • Двойной щелчок по каждому файлу, показанному на неустановленных изменениях, чтобы открыть компаратор
  • Нажмите на значок "Скопировать все слева направо"
  • Сохранить файл (он исчезнет из неустановленного списка)

Ответ 5

Ответ с лучшим рейтингом фокусируется на способе разрешения конфликта.

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

Для этого вы можете увидеть изменения с помощью:

git diff --base

из https://git-scm.com/docs/git-diff#Documentation/git-diff.txt--1--base

Сравните рабочее дерево с "базовой" версией [...]. Индекс содержит эти этапы только для необъединенных записей, т.е. при разрешении конфликтов.