2016-07-22 5 views
1

Ich habe eine Git-Repo in meinem Computer und eines der Verzeichnisse in diesem Repo ist ein Git-Arbeitsbaum, der den HTML-Build der Dokumente enthält. So geht der Baum so etwas wie dieseHinzufügen und Commit Änderungen an alle git's Filialen mit einem Befehl

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

Als ich bei der Dokumentation arbeiten, beide Zweige (dev und gh-pages) aktualisiert werden, weil ich die Dateien im docs Verzeichnis wechseln und dann Sphinx kompiliert die html in das html Verzeichnis .

Wenn ich jedoch mit dem Prozess fertig bin, muss ich manuell git add . && git commit in der Hauptfiliale und der gh-pages Zweig ausführen, um dann alle Änderungen an Git zu pushen.

Das ist nicht sehr mühsam, aber es wäre praktisch, wenn ich einen Befehl für alle Zweige ausgeben könnte. Ich weiß, dass git push kann „vorbelegt“ werden alle Zweige zu schieben (das ist, was ich tun), aber ich fand keinen Weg, dies zu tun addieren und zu begehen, wie (zum Beispiel, nur um oder Klarstellung)

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

oder so ähnlich. Gibt es einen Weg, es zu tun?

Prost!

+1

Sie scheinen nicht zu verstehen, welche Zweige in Git sind. Zweige existieren nicht auf Pfaden. Bitte [lesen Sie ein Buch] (https://git-scm.com/book/en/v2). – poke

+0

@poke Ich weiß, ich kann Zweige innerhalb eines Verzeichnisses ändern und dass eine Verzweigung nicht in einem bestimmten Verzeichnis existieren muss. Ich benutze alle meine 4 Zweige in meinem Top-Verzeichnis aller meiner Computer, mit Ausnahme von 'gh-pages', die ich für praktische Zwecke dauerhaft im' html' ausgecheckt habe, was ich meinte. Danke trotzdem für den Buchtipp. – TomCho

+0

Sie könnten [diese Antwort] (http://stackoverflow.com/a/16389663/4233593) hilfreich finden. –

Antwort

1

Es ist nicht möglich, mehrere Zweige gleichzeitig zu übernehmen oder Zweige zusammenzufassen, die derzeit nicht ausgecheckt sind.

Aber Sie können Befehle ein wenig verkürzen. Um alle Änderungen hinzuzufügen und einen Commit durchzuführen, drücken Sie eine Zeile.

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

Meine Projekte haben normalerweise ein Top-Level-Verzeichnis mit "Entwicklung" Zeug. So würde ich wahrscheinlich ein Skript scripts/build_doc.sh (oder was auch immer Sprache, die Sie bevorzugen) wie folgt aus:

#!/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 

Zwei Gedanken: 1) Sie können dies tun, in einem Commit-Haken, 2) sind Sie sicher, dass Sie erzeugt haben wollen Dateien in Ihrem Repository überhaupt?

Verwandte Themen