git diff
и git apply
будут работать для текстовых файлов, но не будут работать для двоичных файлов.
Вы можете легко создать полное двоичное исправление, но вам придется создать временную фиксацию.После того как вы сделали ваш временный коммит (ы), вы можете создать патч с помощью:
git format-patch <options...>
После того, как вы сделали патч, выполните следующую команду:
git reset --mixed <SHA of commit *before* your working-changes commit(s)>
Thisоткатит ваш временный коммит (ы).Окончательный результат оставляет вашу рабочую копию (намеренно) грязной с теми же изменениями, которые у вас были изначально.
На принимающей стороне вы можете использовать тот же трюк, чтобы применить изменения к рабочей копии, не имея истории фиксации,Просто примените патч (ы), и git reset --mixed <SHA of commit *before* the patches>
.
Обратите внимание, что вам, возможно, придется хорошо синхронизироваться, чтобы весь этот вариант работал.Я видел некоторые ошибки при применении патчей, когда человек, производящий их, не выпал столько изменений, сколько я.Возможно, есть способы заставить его работать, но я не стал вдаваться в подробности.
Вот как создать такие же патчи в Tortoise Git (я не рекомендую использовать этот инструмент):
- Подтвердите свои рабочие изменения
- Щелкните правой кнопкой мыши корневой каталог филиала и выберите
Tortoise Git
-> Create Patch Serial
- Выберите любой диапазон значений (
Since
:FETCH_HEAD
будет работать, если вы хорошо синхронизированы) - Создайте патч (ы)
- Щелкните правой кнопкой мыши корневой каталог ветки и выберите
Tortise Git
->Show Log
- Щелкните правой кнопкой мыши на коммите перед вашим временным коммитом и выберите
reset "<branch>" to this...
- Выберите
Mixed
параметр
И как их применять:
- Щелкните правой кнопкой мыши корневой каталог филиала и выберите
Tortoise Git
-> Apply Patch Serial
- Выберите правильные патчи и примените их
- Щелкните правой кнопкой мыши корневой каталог ветви и выберите
Tortise Git
-> Show Log
- Щелкните правой кнопкой мыши на коммите перед коммитом патча (s) и нажмите
reset "<branch>" to this...
- Выберите вариант
Mixed