Переместить определенное изменение из одного коммита в новый - PullRequest
0 голосов
/ 26 февраля 2019

Допустим, я внес некоторые изменения и зафиксировал их.Тогда я совершил в несколько раз больше.Теперь я хочу перенести замену одной определенной строки из этого коммита на новую для cherry-pick.Как я могу это сделать?Это может быть:
1. Измените эту строку на состояние, которое было до этого коммита
2. Зафиксируйте это
3. Затем измените это и подтвердите снова.
Последний коммит может быть cherry-выбрал.

1 Ответ

0 голосов
/ 26 февраля 2019

Если ваш коммит НЕ последний, сделанный в ветке

1) Cherry-выбрать весь коммит, из которого вы хотите только часть, с опцией -n (дляпредотвратите его фактическую фиксацию в ветке и просто импортируйте изменения из , которые фиксируют)

git cherry-pick -n abc123

2) Избавьтесь от ненужных частей, вернув их в состояние доcherry-picking:

git checkout -- path/to/file1 path/to/file2

3) Завершите операцию простым коммитом

git commit -m "Cherry-picked abc123 (only took such and such part)"

Если ваш коммит последний из сделанных на ветке

Пример дерева:

A--B--C<<<master<<<HEAD

C - это коммит, который вы хотите изменить.


1) Вернитесь к точке непосредственно перед этим коммитом с помощьюgit reset (--mixed - режим по умолчанию), чтобы сохранить ваши изменения в рабочем дереве, но не в индексе

git reset B

2) Добавьте только часть "не для выбора" исделать коммит

git add path/to/file1 path/to/file2
git commit -m "some message here"

(в качестве sidenote здесь, если в файле есть и нежелательные изменения и , вы можете выборочно добавлять чанкис git add -p, см. doc )

3) Затем добавьте часть, которую нужно выбрать из вишни, и сделайте еще один коммит.(то же самое, что и выше, с добавлением соответствующих частей)

Это переписает недавнюю историю ветки, поэтому, если вы уже выдвинули коммит, который хотите разделить, вам придется согласиться с вашими коллегами позаблаговременно эту операцию, затем нажмите ее с --force на пульте, чтобы заменить память о плохом коммите (очевидно, если вы не один на репо).

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