У меня есть a repository, содержащий программное обеспечение в отрасли master
и его начальная страница в отрасли gh-pages
. Проект содержит каталог examples
с исходными файлами, которые должны содержаться в ветке master
. Домашняя страница должна содержать скомпилированные примеры и, возможно, исходные файлы. Как я могу поделиться примерами (которые зависят от ветви master
для компиляции) между обеими ветвями? Нужный Последовательность действий:Как делиться отдельными файлами между несколькими ветвями в git
$ git checkout gh-pages; ls examples/ # directory is empty $ git checkout master; ls examples/ # directory contains .tex source files author.tex $ make examples && ls examples/ # compiles .tex files to .png files author.tex author.png $ $MAGIC_COMMIT_TO_BRANCH_SELECTED_FILES gh-pages author.png author.tex $ git checkout gh-pages; ls examples/ author.tex author.png
Отделение gh-pages
уже может содержать примеры так просто переход к этой ветви будут перезаписаны вновь скомпилированные файлы. Скомпилированные файлы не должны быть привязаны к ветви master
. Я думал о создании другой ветки examples
, но это не делает ее проще. Если god-подмодуль может указывать на определенные ветви (может они?), Я мог бы создать ветвь examples
, которая используется в других ветвях как подмодуль. Перемещение примеров в другой репозиторий может работать, но я бы предпочел сохранить все в одном хранилище. Может быть, есть какой-то менеджер слияния или волшебство вишни?
«переключение на эту ветвь перезаписывает вновь скомпилированные файлы»: нет, git откажется от переключения ветвей, поскольку это приведет к перезаписи этих файлов и, возможно, приведет к потере данных. – Cascabel
Кроме того, вы просите что-то очень отличное от того, что у вас есть определенные файлы на двух ветвях (что было бы просто). Вы просите, чтобы одна ветка содержала скомпилированные версии файлов в другой ветке. – Cascabel
Вы правы - исходные файлы должны быть на обеих ветвях (которые могут быть решены путем выбора вишни, если я правильно понимаю), но скомпилированные файлы должны быть созданы в одной ветке и переданы на другом. Цепь make, git-ls-files, copy-to-temp, switch branch, copy-from-temp, commit может решить мою проблему с помощью уродливого взлома. – Jakob