Проблема в том, что я, очевидно, не могу сделать частичную фиксацию изменений в файле на четыре строки из примерно 200 или около того измененных строк в этом файле. Это может быть из-за команды, которую я ошибочно выполнил, а затем якобы исправил. Я опытный пользователь git, и раньше я выполнял подобные задачи, но всегда делал это, не ошибаясь ранее.
Вот что я сделал.
У меня есть файл с 3 или 4 изменениями, включая файл, который, на мой взгляд, может быть желательным, даже если другие изменения слишком экспериментальные.
У меня также есть несколько переименованных файлов, поэтому переименования являются поэтапными.
Я сделал обычный git add -p file
шаг и убедился, что git diff --cached file
показал именно то изменение, которое я хотел проверить.
Я случайно сделал git commit -m "Message"
(опуская имя файла, которое я должен был включить), и он зафиксировал (поэтапные) переименования, что было нежелательно, а также file
.
Затем я поддержал этот коммит с помощью git reset HEAD~1 --soft
. Это отменило фиксацию, но оставило file
в поэтапном состоянии, со ВСЕМИ изменениями, а не только add -p
изменениями, как показано git diff --cached file
.
Поскольку я не хотел, чтобы все изменения были подготовлены для фиксации, я сбросил файл с помощью git reset HEAD file
. В этот момент git status
и git diff
, кажется, показывают, что я вернулся в состояние, в котором я находился до команды git add -p file
.
Проблема в том, что на этом этапе, если я сделаю следующее только с желаемым изменением, принятым во время добавления,
git add -p file
git commit file -m "Message"
Статус показывает все изменения в file
при получении. Количество строк показывает слишком много строк после завершения фиксации.
Как мне зафиксировать только то, что я выбрал во время git add -p file
теперь, когда мне кажется, что я заблокирован от этого?
Комментарий: Обычно у меня нет поэтапных переименований, поэтому обычно мне не нужно пытаться указать файл, который я хочу зафиксировать. Я думаю, что значение git commit file
- это не то значение, которое мне нужно для моих целей. Прочитав man-страницу, я думаю, что он пытается сказать, что не имеет значения, что ставится на file
, когда вы делаете git commit file
, он будет фиксировать полный набор изменений этого файла. Кроме того, git commit -p file
будет делать правильные вещи для file
после того, как позволит мне выбрать изменение в интерактивном режиме, но при этом будет также зафиксировано несвязанное переименование, которое ставится.