Как удалить определенные строки из последнего коммита и добавить их в новый коммит в git? - PullRequest
0 голосов
/ 14 декабря 2018

В моем последнем коммите я добавил определенные строки в файл, которые должны были быть добавлены как отдельный коммит.Как мне отменить только эти строки из коммита, не удаляя их полностью (поскольку мне все еще нужно добавить их позже)?

Я знаю, что могу сделать git reset HEAD~1, чтобы полностью отменить фиксацию, а затем добавить патч add git add -p только строки, которые мне нужны, а затем передайте его снова.Я действительно искал более чистое решение (если оно существует)

Ответы [ 3 ]

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

Это самое быстрое, что я могу придумать.

  • отменить эти строки, затем git add .
  • git commit --amend --no-edit (при условии, что вы не измените свое последнее сообщение git commit)
  • затем добавьте строки, необходимые для нового коммита.
0 голосов
/ 14 декабря 2018

Некоторые изменения в @~ должны быть не в @, а в другой ветви, поэтому сбросьте их здесь:

git reset -p @~ -- that/file
git commit

фиксируйте их там

git checkout another
git commit -p -- that/file
git checkout @{-1}    # aannd we're back

В git commit -- path есть логика особого случая, которая гласит: «Мне все равно, как выглядит индекс, фиксируйте только изменения определенных путей, которые я вам дал, и игнорируйте все остальное».Он построен специально для подобных случаев, когда вы исправили что-то, что требует отдельной записи.Просто зафиксируйте то, что находится перед вами в вашем рабочем дереве, а затем отправьте изменения куда угодно и как угодно, чтобы они были записаны.

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

git reset --soft `git merge-base @{u} @`

, а затем делать патчи-коммиты для ваших изменений, переключаясь и / или делая ветки по желанию.Как только вы получите удобство с , что worfklow, есть даже git checkout --merge, который запускает импровизированное слияние контента с вашим текущим советом в качестве основы, разрешить незначительные конфликты может быть заметно легче, чем выполнять копить и-поп-танец.

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

Не думаю, что на самом деле есть что-то чище, чем это.В зависимости от того, сколько вы смотрите на извлечение и как оно рассредоточено, git commit --amend может быть проще, если вы просто хотите вытащить несколько отдельных строк или большой последовательный фрагмент и повторно добавить + зафиксировать их как частьследующий коммит.

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