Есть ли способ в git разделить изменения в одном файле на два коммита?
Итак, у меня есть файл:
...
some code here..
...
some unrelate code here..
...
и я делаю в нем следующие изменения:
...
some code here that needs to be changed a bunch..
...
some unrelated code here..
...
Допустим, я нахожусь в середине некоторых значительных изменений в первом разделе, и я заметил опечатку в следующем разделе. Я хочу исправить опечатку и зафиксировать ее и, возможно, сразу же нажать на нее, но я все еще работаю над первой частью, а не читаю, чтобы поделиться ею. Очевидно, я мог бы использовать git stash или сделать промежуточный коммит и исправить опечатку в другой ветке, но есть ли способ добавить только некоторые изменения в файле в область подготовки. Очевидно, я могу снять опечатку, git add myfile
затем исправьте опечатку, но если исправление опечатки является более сложным, это может раздражать. Есть ли способ указать строки в файле, который я хочу добавить с git add
?
3 ответа
-p
Флаг позволит вам выбрать, какие части файла вы добавляете. Здесь есть популярный вопрос, который предоставляет более подробную информацию о флаге патча.
Из терминала, git add --patch
или же git add --interactive
может использоваться для выборочного внесения изменений в коммит, даже в пределах одного файла.
Если вы предпочитаете использовать графический инструмент, git gui
позволяет выборочно выполнять этапы, щелкая правой кнопкой мыши на diff, с помощью "stage stage для commit" и, если выделены строки, "stage lines for commit".
Интерактивная постановка
git add --interactive
позволит вам выборочные этапы из отредактированных файлов.
Сокрытие изменений
Если у вас есть немного предвидения, вы можете
git stash save 'typos'
// edit file
git commit -am 'fix'
git stash pop
Исправленные опечатки, которые были временно "спрятаны" (илиотложены в других VCS), будут объединены в вашу рабочую копию.
Беглец Vim имеет гораздо более мощные возможности, если вы заинтересованы в использовании Vim для этой цели.