Удалить случайные коммиты из одного файла - PullRequest
0 голосов
/ 13 октября 2018

У меня есть один файл, в который я внес несколько изменений и зафиксировал каждое изменение из новой ветви функций.Пожалуйста, обратитесь к диаграмме ниже.

F0 - C0 - added file "Test.sql" to the repo
F1- C1 -  ++ line 01
F2 - C2 - ++ line 02
F3 - C3 - ++ line 03
F4 - C4 - ++ line 04
F5 - C5 - ++ line 05

Где линия коммитов и функций:

  C0 < C1 < C2 < C3 < C4 < C5 
  F0 < F1 < F2 < F3 < F4 < F5

Теперь я намерен отменить изменение от коммита C3 (т.е. удалить строку03) из файла с помощью следующей команды:

    git revert --no-commit C3

Но я получаю конфликты слияния.

Я собираюсь удалить только изменения из коммита C3, все остальныелинии останутся без изменений и в том же порядке.

Что мне делать?Пожалуйста, помогите.

С уважением.Kumarjit

1 Ответ

0 голосов
/ 14 октября 2018

У вас есть конфликты слияния, потому что следующие коммиты содержат эту строку и основаны на этом.Единственное решение решает конфликты вручную.

Вы также можете создать новый коммит для вручную удаленного контента из C3

Я покажу вам, как вы можете редактировать историю коммитов, отбрасывая конкретный коммит, который вам не нужен,Если вы хотите иметь всю историю коммитов только без этого коммита, вы можете использовать команду rebase.

git log

Копировать хэш C2 коммит.Прежде чем вы захотите изменить, это должен быть один коммит.

git rebase -i hashOfC2Commit

Измените флаг с p на d (сбросьте) и сохраните его (команда :wq в консоли).

Теперь, если у вас есть конфликты, откройте редактор и решите его.Когда вы решаете конфликты, используйте

git rebase --continue

Это простой способ разрешать конфликты и редактировать историю коммитов.

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