Переносить части из предыдущей версии файла? - PullRequest
0 голосов
/ 03 июля 2018

Я часто пишу черновую версию файла, фиксирую его, а затем начинаю заново, используя то, что я узнал. Я часто вырезал и вставлял хорошие детали из черновой версии.

Проблема в том, что если я checkout черновик (файла), он перезапишет новую версию (файла), потому что они имеют одинаковое имя ... [это всего лишь один файл]

В идеале, отредактируйте как черновую (старую), так и обновленную (новую) версии в vim, что-то вроде этого притворного синтаксиса:

vi HEAD^^/Myfile Myfile

Как передать информацию между двумя версиями файла?

  • stash текущая версия, checkout старая версия, скопируйте ее из репозитория git и повторно примените тайник. Теперь у меня есть доступ к обеим версиям, но не очень похожий на мерзавец!

  • проверьте его с другим именем и оставьте его в каталоге (например, myfile_draft.ext). У меня есть доступ к обеим версиям, но я склонен к случайному совершению.

  • интерактивный патч. Неловкий и неестественный способ редактирования файлов!

Есть ли естественный способ, похожий на мерзавца?

Или, мое использование черновика - проблема, и есть лучший, более похожий на git способ сборки из начальной версии?

1 Ответ

0 голосов
/ 03 июля 2018

Один из возможных вариантов

Исходное состояние:

A - B - C - D (HEAD, draft-version)

Создайте новую ветку и сбросьте ее до новой «начальной точки»:

git checkout -b new-version
git reset A

Промежуточное состояние:

A (HEAD, new-version) - B - C - D (draft-version)

Изменения B, C и D будут отображаться как незафиксированные изменения в ветви 'new-version'. Теперь вы можете редактировать файлы, сохранять то, что вам нравится, отбрасывать то, что вам не нравится, и фиксировать снова.

git commit

Окончательный результат:

A - B - C - D (draft-version)
 \
  E (HEAD, new-version)
...