2017-02-21 1 views
0

Мой вопрос касается git и того, как правильно его использовать. Мои знания очень просты.Включите часть старой версии зафиксированного файла в новую фиксированную версию файла

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

(Как) это возможно?

ответ

2

Поскольку вы уже подтолкнули вашу фиксацию, изменение ее потенциально опасно, так как кто-то мог ее проверить и теперь работает над ней. Было бы проще добавить кусок в новую фиксацию.

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

Вы не упомянули, используете ли вы какой-либо графический интерфейс, поэтому я предполагаю, что вы используете git по командной строке.

Вариант 1: Чтобы добавить его как новый фиксатор поверх старого фиксации, используйте свой инструмент выбора, чтобы показать историю репозитория (это будет gitk в командной строке), найдите предыдущую фиксацию, скопируйте фрагмент, который был удален, вставьте его в свой текущий код и зафиксируйте и нажмите вновь добавленный кусок.

Вариант 2: Для того, чтобы вернуться в свою историю repositorys и изменить удаление в первую очередь, вы можете использовать

git reset HEAD~2 

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

git checkout -- <filename> 

или отменить только удаление фрагмента с помощью

git checkout -p <filename> 

и следуя инструкциям на экране. Затем вы можете совершать свои изменения, либо как одно, либо разделенное на два, так как они были начальными. Когда вы хотите нажать, вам придется принудительно перезаписать аргумент --force, поскольку ваша история отличается от предыдущей. Имейте в виду, что ЭТО ПОТЕНЦИАЛЬНО ДЕСТРУКТИВНО.

Смежные вопросы