Какой самый быстрый способ вытащить части нового файла в git?
Когда я хочу разделить новый файл на несколько коммитов, я могу git add -N <file>
а затем интерактивно сценические линии, используя git gui
, Когда я делаю ошибку во время постановки, однако, git gui
не позволит мне удалить отдельные строки, потому что это новый файл (который мне кажется ошибкой). Конечно, я всегда могу удалить весь файл и начать все заново, но мне интересно, есть ли более эффективный способ сделать это.
я использую git 1.7.5
,
Чтобы уточнить, этот вопрос является специфическим для новых неотслеживаемых файлов!
4 ответа
Из командной строки введите:
git reset -p
Это позволит вам выборочно отключать фрагменты из индекса с помощью стандартного интерфейса командной строки для управления фрагментами. Это противоположно git add -p
,
ОБНОВИТЬ
Хорошо, может показаться, что вы не можете выборочно ставить разные фрагменты, когда файл новый. Учитывая, что git-gui и стандартный редактор git hunk не позволяют этого, это, вероятно, невозможно.
С помощью fugitive
Вы можете легко сделать это. Просто вызвать :Gdiff
Командуйте, а затем ставьте и отключайте все, что хотите. Вы даже можете редактировать индексный файл напрямую. Конечно, это решение требует, чтобы вы были достаточно комфортно с vim
а также vimdiff
...
Я столкнулся с той же проблемой: я только что зафиксировал новый файл, и я хотел удалить некоторые строки в этом файле и сделать их отдельным коммитом. Решение, которое я разработал, было:
- Начните с коммита, который добавляет новый файл
- Удалите строки, которые вы хотели удалить из исходного файла, внесите эти изменения и
git commit -m 'REVERTME'
- Создайте новый коммит, который отменяет этот последний коммит:
git revert HEAD
- использование
git rebase -i
вfixup
первый новый коммит и при необходимостиreword
возврат совершить.
Другой простой способ отсортировать это - вырезать из файла все, кроме одной строки, которую вы хотите в первом коммите. Поставьте его, а затем добавьте обратно остальную часть файла. С этого момента вы можете ставить фрагменты / строки как обычно