Добавляйте и фиксируйте изменения во всех ветках 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) вы уверены, что хотите вообще сгенерировать файлы в своем хранилище?

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