Добавляйте и фиксируйте изменения во всех ветках 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

или что-то типа того. Есть ли способ сделать это?

Ваше здоровье!


person TomCho    schedule 22.07.2016    source источник
comment
Вы, кажется, не понимаете, что такое ветки в Git. Ветви не существуют на путях. Пожалуйста, прочитайте книгу.   -  person poke    schedule 22.07.2016
comment
@poke Я знаю, что могу менять ветки в одном каталоге и что ветка не обязательно должна существовать в определенном каталоге. Я использую все свои 4 ветки в моем верхнем каталоге всех моих компьютеров, кроме gh-pages, который я оставляю постоянно извлеченным в html для практических целей, что я и имел в виду. В любом случае спасибо за подсказку с книгой.   -  person TomCho    schedule 22.07.2016
comment
вы можете найти этот ответ полезным.   -  person Jeff Puckett    schedule 23.07.2016


Ответы (2)


Невозможно зафиксировать несколько ветвей одновременно или объединить ветки, которые в данный момент не проверены.

Но вы можете немного сократить команды. Чтобы добавить все изменения и сделать коммит, нажмите одну строку

git commit -am "commit message" && git push
person Jeff Puckett    schedule 22.07.2016

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

person AnoE    schedule 26.07.2016