2016-07-22 5 views
1

У меня есть git repo на моем компьютере, и одна из каталогов внутри этого репо - это рабочая строка git, которая содержит html-сборку документов. Так дерево идет что-то вроде этогоДобавить и зафиксировать изменения во всех ветвях git с одной командой

. # <--- main branches here! 
├── docs 
│   └── _build 
│    ├── doctrees 
│    ├── html # <--- gh-pages branch here! 
│    │   ├── _modules 
│    │   ├── _sources 
│    │   └── _static 
│    └── latex 
├── examples 
└── mypackage 
    ├── subpackages 
    └── subpackages 

Когда я работаю на документы, обе ветви (dev и gh-pages) обновляется, потому что я изменить файлы в каталоге docs, а затем сфинкс компилирует HTML в каталог html ,

Однако, когда я закончил процесс, мне нужно вручную выполнить git add . && git commit как в основной ветке, так и в ветке gh-pages, чтобы затем нажать все изменения в git.

Это не ужасно хлопотно, но было бы удобно, если бы я мог выпустить одну команду для всех ветвей. Я знаю, что git push может быть «по умолчанию», чтобы подтолкнуть все ветви (что я делаю), но я не нашел способ сделать это, чтобы добавить и совершить такие как (например, только ради или уточнения)

git add . --allbranches 
git commit --allbranches -m "updated the docs" 
git push 

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

Cheers!

+1

Вы, кажется, не понимаете, какие ветви в Git есть. Филиалы не существуют на путях. Пожалуйста, прочитайте книгу (https://git-scm.com/book/en/v2). – poke

+0

@poke Я знаю, что я могу менять ветки в одном каталоге и что ветвь не должна существовать в определенном каталоге. Я использую все свои 4 ветви в моем верхнем каталоге всех моих компьютеров, кроме 'gh-pages', которые я оставляю навсегда в« html »для практических целей, что я имел в виду. В любом случае, спасибо за подсказку. – TomCho

+0

вы можете найти [этот ответ] (http://stackoverflow.com/a/16389663/4233593) полезно. –

ответ

1

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

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

git commit -am "commit message" && git push 
0

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

Смежные вопросы