Добавляйте и фиксируйте изменения во всех ветках git одной командой
У меня есть git-репозиторий на моем компьютере, и один из каталогов внутри этого репозитория - это git-рабочее дерево, которое содержит html-сборку документов. Так что дерево идет примерно так
. # <--- main branches here!
├── docs
│ └── _build
│ ├── doctrees
│ ├── html # <--- gh-pages branch here!
│ │ ├── _modules
│ │ ├── _sources
│ │ └── _static
│ └── latex
├── examples
└── mypackage
├── subpackages
└── subpackages
Когда я работаю в документах, обе ветви (dev
а также gh-pages
) получить обновление, потому что я меняю файлы в docs
каталог, а затем sphinx компилирует HTML в html
каталог.
Однако, когда я закончу с процессом, я должен выполнить вручную git add . && git commit
как в основной отрасли, так и gh-pages
ветвь, чтобы потом нажать все изменения в git
Это не очень хлопотно, но было бы удобно, если бы я мог выполнить одну команду для всех ветвей. я знаю это git push
может быть "дефолтным", чтобы выдвинуть все ветви (что я и делаю), но я не нашел способа сделать это, чтобы добавить и зафиксировать, например (например, просто для пояснения)
git add . --allbranches
git commit --allbranches -m "updated the docs"
git push
или что-то типа того. Есть ли способ сделать это?
Ура!
2 ответа
Невозможно зафиксировать несколько веток одновременно или объединить ветки, которые в настоящее время не извлечены.
Но вы можете немного сократить команды. Чтобы добавить все изменения и сделать коммит, нажмите в одну строку
git commit -am "commit message" && git push
Мои проекты обычно имеют каталог верхнего уровня с материалами "разработки". Так что я бы наверное сделал скрипт scripts/build_doc.sh
(или любой другой язык, который вы предпочитаете), например:
#!/bin/bash
if [ "`git status -z`" != "" ] ; then echo Need clean directory ; exit 1 ; fi
whatever_command_to_rebuild_pages
git add -A dir_to_built_html_pages && \
git commit -m "autobuild" && \
git push
Две мысли: 1) вы могли бы сделать это в фиксации, 2) вы уверены, что хотите вообще сгенерировать файлы в своем хранилище?