Есть ли способ в 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 для этой цели.

Другие вопросы по тегам