Да, это , что плохо. Я считаю, что если вам не нравится использование реляционных баз данных, ищите альтернативу, которая вам подходит, есть много интересных проектов NOSQL с некоторыми действительно расширенными функциями.
Вы можете создать патч, используя git diff
, а затем применить его с помощью утилиты patch
, которая позволяет вам указать файл, который вы хотите применить diff to.
Например:
cd first-repo
git diff HEAD^ -- hello.test > ~/patch_file
cd ../second-repo
patch -p1 blue/red/hi.test ~/patch_file
Существует простое решение, которое не требует ручного редактирования патчей и внешнего скрипта.
В первом репозитории (это может также экспортировать диапазон фиксации, используйте -1
, если вы хотите выбрать только одно коммит):
git format-patch --relative <committish> --stdout > ~/patch
Во втором репозитории:
git am --directory blue/red/ ~/patch
Вместо использования --relative
в git format-patch
другое решение состоит в использовании опции -p<n>
в git am
для удаления n
каталогов с пути патчей, как указано в a ответит на аналогичный вопрос .
Также можно запустить git format-patch --relative <committish>
без --stdout
, и он сгенерирует набор файлов .patch
. Эти файлы затем могут быть поданы непосредственно на git am
с помощью git am --directory blue/red/ path/to/*.patch
.
--directory
требуется указать полный путь к каталогу относительно корня репо; что-то вроде --directory=./
, а chdir'd в подкаталог в репо не будет работать.
– Reid
2 August 2016 в 19:39
--3way
помогает с does not exist in index
: git am --3way --directory (relative-path) (patch)
– nobar
10 December 2017 в 01:32
Отвечая на мой собственный вопрос скриптом, который выполняет только это: https://github.com/mprpic/apply-patch-to-file
Вместо изменения файл исправления вручную, он запрашивает у пользователя целевой файл, изменяет патч и применяет его к репо, в котором вы сейчас находитесь.
am
илиapply
, но я не могу его найти. Если вы обнаружите, что вы много дублируете изменения, может быть лучшее решение, использующее подмодули, или независимо от того, какой ваш язык предлагает для совместного использования кода (например, в Ruby вы можете извлечь дубликат кода в качестве драгоценного камня). – georgebrock 13 May 2013 в 18:58