Git не заботится о том, когда файл был создан. Его волнует, что на ревизии. В ревизии файл был создан с определенным содержимым ... затем вы запрашиваете откат (содержимое остается прежним), он удаляет файл.
Чтобы обеспечить некоторый контекст: когда git создает revision, он не сохраняет много информации о файле (когда это файл) ... помимо содержимого ... и нескольких флагов разрешений. Итак, в самой первой ревизии вы создаете объект ревизии, объект ревизии будет указывать на объект дерева, информацию о каталоге root .... с подкаталогами и файлами, присутствующими в этом каталоге. В вашем случае на объекте дерева каталогов root вы увидите , но еще другой объект, файл, о котором мы говорим, который указывает на объект blob (само содержимое файла). Итак, что git делает, чтобы знать, что он вернется, - это сравнить с предыдущей версией той, которую вы хотите вернуть. Предыдущая ревизия не существует, поэтому git понимает, что вы хотите вернуть файл целиком, потому что до этой ревизии файл не существовал .... после ревизии файл действительно существует и имеет некоторое содержимое . Если вы хотите отменить его, файл должен быть go прочь, если содержимое совпадает .... если вы изменили содержимое (например, во второй ревизии), а затем попытались отменить первую ревизию, вы увидите конфликт деревьев ... и конфликт содержимого? Не уверен в конфликте контента. Возникает конфликт дерева, потому что git не будет пытаться удалить файл, если содержимое не соответствует тому, что было в ревизии, в которую он был добавлен при операции возврата.