Я хотел бы избежать вызова фарфоровых команд из моих скриптов, но есть ли способ получить некоторое поведение git checkout <commit>
используя только команды сантехники, такие как checkout-index
? Мне особенно интересно влияние на рабочую копию: если все чисто, checkout
удаляет файлы, которые были отслежены в старой HEAD и отсутствуют в новой. checkout-index
, похоже, не имеет понятия об удалении файлов. Самое близкое, о чем я могу думать, - это позвонить
git diff-tree -p <old> <new> | git apply
но вычисление всего diff кажется излишне дорогостоящим. Есть ли способ лучше?