git вернуть файл к предыдущему коммиту после изменения его пути - PullRequest
0 голосов
/ 11 октября 2018

У меня есть файл ./new-path/file.java, который контролируется Git.В более раннем коммите (<SHA-1>) его путь был ./older-path.Теперь я хочу восстановить его старое содержимое, как было зафиксировано в <SHA-1>.

. Я могу восстановить этот файл, выполнив git checkout <SHA-1> -- ./older-path/file.java, а затем скопировать его содержимое в ./new-path/file.java.Но я должен сделать вышеуказанные шаги для нескольких старых коммитов, и этот способ не подходит.Как я могу сделать это напрямую с помощью Git?

1 Ответ

0 голосов
/ 11 октября 2018

Вы не можете, но на самом деле это не проблема.

Если вы попросите Git проверить его по имени , вы получите старое имя.

Если вы попросите Git показать вам контент , вы сделаете это по старому имени, и контент перейдет к стандартному выводу, который вы можете перенаправить, но не с помощью Git.Таким образом, вы можете сделать это напрямую, но не напрямую с помощью Git :

git show <hash>:./older-path/file.java > new-path/file.java

Обратите внимание, что git show не будет применять фильтры (включая фильтрацию конца строки).Добавление --textconv должно вызывать такие преобразования, но в моих экспериментах это не работает (с Git 2.19.0).Альтернативой является использование git cat-file --filters <hash>:<path>, которое, похоже, работает.Однако используются фильтры, определенные в current .gitattributes, а не в .gitattributes, связанном с указанным коммитом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...