jupp0r был на правильном пути. Сначала cd
в корень вашего репозитория. Затем:
git commit -a -m 'Backup commit.'
git branch pre-patch
git reset --hard HEAD~
git diff --patch -w HEAD pre-patch > patch.diff
git apply patch.diff
Я не уверен, будет ли это работать на двоичные изменения. Если нет, вы можете передать их отдельно заранее. Если этот процесс завершился неудачно, ваш код находится в ветке pre-patch
.
Что это делает:
- Создает коммит и филиал для хранения полных изменений. Это также служит резервным копированием.
- Возвращает шаг, прежде чем эти изменения были сделаны.
- Получает «diff -w» из старого кода в новый код, отформатированный как патч.
- Применяет патч.
Примечание: Если вы уже совершили изменение и хотите его изменить, просто опустите первый шаг.
Возможно, используя скрипт, похожий на крюк pre-commit, упомянутый в http://stackoverflow.com/a/592014/6309? – VonC
@VonC: Я был бы очень благодарен, если бы вы могли понравиться этому сценарию для нас. –
@ Abhishek вы имеете в виду, как этот? https://github.com/imoldman/config/blob/master/pre-commit.git.sh – VonC