Была фиксация для определенного файла, в какой-то момент ее нужно отменить
Я хочу создать патч возврата между этим старым коммитом с хешем # 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
Если в старой и новой версии достаточно общего текста, Git сможет определить, что файл был переименован. Затем вы также получите текст исправления, показывающий изменения с помощью этой команды:
git diff old-commit HEAD -- folderA/file.c folderB/folderC/file.c
Команда дает указание git diff
исследовать два файла. Конечно, одного пути нет в HEAD
другого нет в нем old-commit
. По этой причине добавьте --
к команде, чтобы сказать git diff
: нет, правда, я имею в виду, что следующие два аргумента — это пути к файлам (правильнее: pathspec).
Я обновил вопрос с результатом команды, она не генерирует патч
Я продублирую рабочую папку и вернусь к этой фиксации, чтобы создать разницу между двумя рабочими папками. так же патч нужно вернуть
Вы можете оформить заказ 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
Используйте патч, который лучше всего соответствует вашим потребностям.
похоже не на конкретный файл нацелен, а на всю ветку
Как видно из similarity index 100%
, файлы в старом и новом местоположении абсолютно идентичны между двумя коммитами.
Хорошо ... вот еще одна попытка ... позвольте мне скорректировать ответ.
да, я сделал что-то подобное, но проще, продублировав все репо, ваше решение действительно более легкое :-)
Является ли
A1B2C3D4
фиксацией, которую вы хотите отменить, или есть другая фиксация между этой иHEAD
, чье изменение вы хотите отменить?