GIT/DIFF — обратный патч между перемещенным локальным файлом и старой фиксацией

Была фиксация для определенного файла, в какой-то момент ее нужно отменить

Я хочу создать патч возврата между этим старым коммитом с хешем # A1B2C3D4:

folderA/file.c

... и файл в моей рабочей папке (в основной ветке):

folderB/folderC/file.c

Сложность здесь для меня в том, что файл был перемещен в другую структуру каталогов

как можно использовать git/diff/gittools/bc для создания такого обратного патча для перемещенного файла?

Я проверил документ, но команда git revert, похоже, не делает то, что я хочу

Спасибо за вашу помощь

[редактировать]

Я пытался

git diff A1B2C3D4 HEAD -- folderA/file.c folderB/folderC/file.c

он вернулся

Similarity index 100%
rename from folderA/file.c
rename from folderB/folderC/file.c

Является ли A1B2C3D4 фиксацией, которую вы хотите отменить, или есть другая фиксация между этой и HEAD, чье изменение вы хотите отменить?

j6t 10.02.2023 10:22
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

git diff old-commit HEAD -- folderA/file.c  folderB/folderC/file.c

Команда дает указание git diff исследовать два файла. Конечно, одного пути нет в HEAD другого нет в нем old-commit. По этой причине добавьте -- к команде, чтобы сказать git diff: нет, правда, я имею в виду, что следующие два аргумента — это пути к файлам (правильнее: pathspec).

Я обновил вопрос с результатом команды, она не генерирует патч

pf12345678910 10.02.2023 10:11

Я продублирую рабочую папку и вернусь к этой фиксации, чтобы создать разницу между двумя рабочими папками. так же патч нужно вернуть

pf12345678910 10.02.2023 10:20
Ответ принят как подходящий

Вы можете оформить заказ A1B2C3D4, переименовать там файл на то имя, которое у вас есть сейчас. Затем вы можете сравнить 2 коммита, которые вам нужны, чтобы сгенерировать патч.

git checkout A1B2C3D4
git mv some-file some-file-new-path
git commit -m "Renamed file"
git diff the-other-commit -- some-file-new-path > some-patch-revert.patch
git diff HEAD the-other-commit -- some-file-new-path > some-patch.patch

Используйте патч, который лучше всего соответствует вашим потребностям.

похоже не на конкретный файл нацелен, а на всю ветку

pf12345678910 10.02.2023 10:12

Как видно из similarity index 100%, файлы в старом и новом местоположении абсолютно идентичны между двумя коммитами.

j6t 10.02.2023 10:20

Хорошо ... вот еще одна попытка ... позвольте мне скорректировать ответ.

eftshift0 10.02.2023 10:21

да, я сделал что-то подобное, но проще, продублировав все репо, ваше решение действительно более легкое :-)

pf12345678910 10.02.2023 11:19

Другие вопросы по теме