Verwalten vieler Git-Repositorys

87

Das Einrichten eines Projekts ist in Git einfach und so kann ich auch für kleine Skripte ein separates Repository haben. Jetzt ist das Problem, wie man sie verwaltet.

Ich arbeite an mehreren Orten mit diesen Repositories. Wenn ich Änderungen an einem Repository vorgenommen habe, möchte ich die Repositorys an anderen Stellen aktualisieren können.

Ich habe also ein Verzeichnis mit vielen Repositorys.

  1. Wie kann ich alle abrufen?
  2. Wie kann ich überprüfen, ob einer von ihnen nicht festgeschriebene Änderungen aufweist?
  3. Wie kann ich überprüfen, ob bei einem von ihnen Änderungen zum Zusammenführen vorgenommen wurden?

Und es wäre schön, dies mit einem Befehl tun zu können.

Die Ausgabe muss leise genug sein, um die zu erledigenden Aufgaben tatsächlich zu bemerken.

iny
quelle
Die gleiche Frage beantwortet für hg mercurial.
Serge Stroobandt
Ich verwende die Multi-Cursor-Auswahl- / Mehrzeilen-Bearbeitungsfunktion meines Code-Editors (VS-Code), um ein Batch- / Shell-Skript zu erstellen und es auf einmal auszuführen. Mit dieser einfachen, dummen Lösung weiß ich, was ich tue und was ich von der Ausführung dieser Befehle erwarten kann. Kein Raten, kein Lernen, keine Anpassung erforderlich. Ein weiterer Grund ist, dass ich jedes Mal Befehle für verschiedene Repos ausführen möchte, die sich in einem gemeinsamen übergeordneten Verzeichnis befinden.
IsmailS

Antworten:

45

Ich empfehle das Tool für mehrere Repositorys mr . Ich habe einige Zeit ein benutzerdefiniertes Shell-Skript verwendet, wie von anderen empfohlen, aber die Verwendung von mr hat für mich die folgenden Vorteile:

  • Es ist generisch: Es kann eine Verbindung verschiedener Versionskontrollsysteme verwendet werden, nicht nur Git (z. B. Mercurial, SVN usw.).
  • Es ist schnell: Herr kann mehrere Jobs gleichzeitig ausführen. Ich benutze eine Reihe von Git / Mercurial-Repositories und synchronisiere sie mehrmals am Tag. Herr beschleunigt diesen Prozess enorm.
  • Es ist einfach und schnell, die Liste der Repository-Kassen zu verwalten. Verwenden Sie einfach 'mr register', anstatt die Liste der Projekte in Ihrem benutzerdefinierten Skript zu ändern.

Zu Ihrer Frage zur stillen Ausgabe: Der Grad der Ausführlichkeit kann mit dem Befehlszeilenschalter -q geändert werden. Ich bevorzuge die Standardausgabe, die die Ausgabe in einer kurzen und klaren Zusammenfassung schön zu vereinheitlichen scheint.

Ich verwende den folgenden Alias ​​für den Befehl mr, um sicherzustellen, dass mr immer meine in $ HOME gespeicherte Standardprojektliste aufnimmt und 5 parallele Threads verwendet:

alias mr='mr -d ~/ -j 5 '
Sandro Giessl
quelle
5
Unterstützt es Windows?
Fitzchak Yitzchaki
Es ist großartig, unterstützt aber kein Git-Tagging (Stand 2016-08)
Hugo Zaragoza
@CADbloke erwähnt Windows nicht auf der Installationsseite, aber als Perl-Skript könnte / sollte / könnte es unter Windows funktionieren.
Scipilot
2
@HugoZaragoza, Sie können diesen Befehl immer selbst definieren. [DEFAULT] tag = git tag "$ @"
AlexS
2
alias pa='find . -name .git -print -execdir git pull \;'dann paist genug
DawnSong
19

Ich muss sagen, dass ich mit der aktuell akzeptierten Antwort begonnen habe (nur ein paar Helfer-Skripte, die über die Repositorys iterieren), aber alles in allem war es eine fehlende Erfahrung für mich.

Nachdem ich mr-, repo- und git-Submodule ausprobiert hatte, stellte ich fest, dass jedes auf unterschiedliche Weise fehlte, und machte schließlich meine eigene Variante: http://fabioz.github.io/mu-repo , ein ausgereiftes Tool bei Dieser Punkt - es hat Workflows, mit denen Sie:

  • Klonen Sie mehrere Repos
  • aktuelle Änderungen in mehreren Repos unterscheiden (und bearbeiten)
  • Vorschau eingehender Änderungen
  • Führen Sie Befehle in mehreren Repos parallel aus
  • Erstellen Sie Gruppen von Repos
  • Führen Sie nicht git-bezogene Befehle über mehrere Repos aus
  • usw. (siehe Homepage für weitere Informationen).

Beachten Sie, dass es jedes Betriebssystem unterstützt, auf dem Python ausgeführt wird;)

Fabio Zadrozny
quelle
Ihre Antwort legt nahe, dass mu-repo besser ist als das, was mr tut. Aber mu-repo unterstützt keine Nicht-Git-Repos.
Shaunak Sontakke
1
Nun, es ist wirklich das Ziel, nur Git-Repos zu unterstützen (was die Frage ist) - obwohl Sie mu sh <some command>einen beliebigen Befehl auch in mehreren Repos ausführen können , befasst sich seine gesamte Endgültigkeit mit Git und nicht mit anderen Versionskontrollsystemen. Wenn Sie das brauchen, dann verwenden Sie bitte ein anderes Werkzeug.
Fabio Zadrozny
14

gr (git-run) erweitertdie Funktionalität von mr (nur fürgit). Ich finde es einfacher, mehrere Git-Repos mithilfe des Tag-Systems zu organisieren. Der Code fürgrist jedoch nicht gut gepflegt. Wenn Sie bash verwenden, stellen Sie sicher, dass Sie es mit demFormular-t taganstelle von#tagverwenden.

Memming
quelle
Es sieht so aus, als ob die Entwicklung seitdem wieder etwas an
Fahrt gewonnen hat
8

Sie können versuchen, Repo mit einer benutzerdefinierten manifest.xmlDatei zu verwenden, um anzugeben, wo sich Ihre Repositorys befinden. Es gibt einige Dokumentationen dazu.

Alternativ könnten Sie verwenden git-submodule(1) .

Spoike
quelle
2
Git-Submodul wäre gut, wenn ich die Repositorys im exakt gleichen Zustand halten möchte, aber das ist nicht der Fall. Die Anzahl der Repositorys ist nicht an jedem Ort gleich. Es kann zu nicht festgeschriebenen Änderungen kommen. Es könnte Änderungen geben, die ich noch nicht zusammenführen möchte.
Iny
Ich wusste nichts über Git-Submodul. Danke, dass du es erwähnt hast.
Sykora
Die Dokumentation für Repo ist recht minimal und sieht so aus, als ob sie für verschiedene Arten von Workflows gedacht ist, die ich verwenden möchte.
Uhr
6

Ich habe ein Tool namens " RepoZ " geschrieben, das automatisch Git-Repositorys erkennt, sobald Sie sie klonen oder etwas daran ändern, wie zum Beispiel das Wechseln eines Zweigs.

Sobald sie gefunden wurden, werden die Repositorys "verfolgt". Das zeigt sie einfach in einer Liste lokaler Repositories, einschließlich einer dichten Statusinformation, die von posh-git inspiriert ist . Dies enthält den aktuellen Zweig und weitere Informationen wie Dateibearbeitungen und die Anzahl der eingehenden oder ausgehenden Commits.

RepoZ UI

Auf diese Weise behalten Sie den Überblick über Ihre lokalen Repositorys und die noch nicht abgeschlossenen Arbeiten zum Festschreiben oder Pushen. Darüber hinaus können Sie die Repository-Liste als Navigation verwenden, um von einem Repository zu einem anderen zu wechseln.

RepoZ-Navigation

"Wie kann ich sie alle holen?"

Die Version für Windows bietet ein Kontextmenü zum Abrufen oder Abrufen eines Repositorys. Mit der Mehrfachauswahl können Sie Aktionen für mehrere Repositorys gleichzeitig ausführen.

Möglicherweise ist jedoch eine andere Funktion sehr nützlich:

RepoZ Auto-Fetch

Mit Auto Fetch können Sie RepoZ anweisen, die Fernbedienungen aller Ihrer Git-Repositorys regelmäßig im Hintergrund abzurufen. Diese Abrufe kollidieren natürlich nicht mit Ihren lokalen Verpflichtungen. Es gibt keine lokalen Zusammenführungsversuche wie mit git pull.

Waescher
quelle
Ja, schade und nicht verdient. Jederzeit für PRs geöffnet. Ping mich an.
Waescher
5

gitslave ist ein Tool, das denselben Befehl über viele Repositorys ausführen kann, indem eine Superprojekt / Unterprojekt-Beziehung zwischen dem Super und den Subs erstellt wird. Dies bietet (standardmäßig) eine Zusammenfassung der Ausgabe, sodass Sie sich auf die Repositorys konzentrieren können, die eine eindeutige Ausgabe liefern (nützlich für den Git-Status, nicht so nützlich für Git-ls-Dateien).

Dies wird normalerweise für Projekte verwendet, bei denen Sie mehrere Repositorys zusammenstellen und zur gleichen Zeit im selben Zweig oder Tag oder was auch immer belassen müssen. Für mein Verzeichnis von (nackten) Repositorys habe ich nur ein kleines Makefile, mit dem ich beliebige Git-Befehle ausführen kann, die ich, wie Sie sehen, hauptsächlich für fsck und gc verwende:

full: fsck-full gc-aggressive
        @:

fsck-full:
        for f in */.; do (cd $$f; echo $$f; git fsck --full || echo $$f FAILED); done

gc-aggressive:
        for f in */.; do (cd $$f; echo $$f; git gc --aggressive || echo $$f FAILED); done

%:
        for f in */.; do (cd $$f; git $@ || echo $$f FAILED); done
Seth Robertson
quelle
5

Ich habe einen Alias ​​und eine Funktion erstellt, um einen beliebigen git-Befehl für alle in einem Verzeichnis verfügbaren Repositorys auszuführen (rekursiv). Sie finden es hier: https://github.com/jaguililla/dotfiles/git

Dies ist der Code:

#!/bin/sh
# To use it: source git_aliases

# Example: rgita remote \;
alias rgita='find . -type d -name .git -execdir git'

# Example: rgit remote -vv
rgit() {
  rgita "$@" \;
}

Ich hoffe es hilft :)

Jaguililla
quelle
1
schlank und nützlich!
Kevin Chou
Fantatisch! Einfacher Einzeiler zum Einsetzen .bash_aliases: alias rgit='function _rgit(){ find . -type d -name .git -printf "\n%p\n" -execdir git "$@" \;; }; _rgit'. Quelle es, dann zB anrufen rgit status.
ford04
4

Sie können das git-status-allJuwel dafür verwenden: https://github.com/reednj/git-status-all

# install the gem    
gem install git-status-all

# use the status-all subcommand to scan the directory
git status-all

Es gibt auch eine Abrufoption, mit der alle Repositorys vom Ursprung abgerufen werden, bevor der Status angezeigt wird:

git status-all --fetch

Git Status alle

Nathan
quelle
1
Sehr schöner Ansatz. Im Gegensatz zu den meisten höher bewerteten Tools müssen keine Repositorys zuerst registriert werden, sondern es werden einfach alle Unterverzeichnisse überprüft.
Luator
find . -name .git -print -execdir git status \;ist in Ordnung
DawnSong
3

Ich verwende dieses Skript, um Git-Befehle in allen meinen Repositorys einfach auszuführen.

#!/bin/sh
if [ ! "$1" = "" ] ; then

   if [ "$GITREPO" = "" -a -d "$HOME/cm/src" ] ; then
      GITREPO="$HOME/cm/src"
   fi

   if [ "$GITREPO" != "" ] ; then

      echo "Git repositories found in $GITREPO"
      echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-"

      DIRS="`/bin/ls -1 $GITREPO`"

      for dir in $DIRS ; do

         if [ -d $GITREPO/$dir/.git ] ; then
            echo "$dir -> git $1"
            cd $GITREPO/$dir ; git $@
            echo
         fi

      done
   else

      echo "Git repositories not found."

   fi
fi

Standardmäßig sucht das Skript nach Git-Repositorys in ~ / cm / src. Sie können dies jedoch überschreiben, indem Sie die Umgebungsvariable GITREPO nach Ihren Wünschen einstellen.

Dieses Skript basiert auf diesem Skript .

Scotts
quelle
find . -name .git -print -execdir git pull \;macht was du denkst.
DawnSong
3

Ich habe ein Kommandozeilen-Tool namens gita geschrieben , um mehrere Repos zu verwalten. Es zeigt beispielsweise den Status registrierter Repos nebeneinander an

Geben Sie hier die Bildbeschreibung ein

Es kann auch Git-Befehle / Aliase aus jedem Arbeitsverzeichnis delegieren.

Um Ihre Fragen mit diesem Tool zu beantworten:

Wie kann ich alle abrufen?

gita fetch

Wie kann ich überprüfen, ob einer von ihnen nicht festgeschriebene Änderungen aufweist?

Der gita lsBefehl zeigt 3 mögliche Symbole neben dem Zweignamen an, der angibt

  • +: inszenierte Änderungen
  • *: nicht inszenierte Änderungen
  • _: nicht verfolgte Dateien / Ordner

Wie kann ich überprüfen, ob bei einem von ihnen Änderungen zum Zusammenführen vorgenommen wurden?

Die Filialnamen sind auf 5 Arten gefärbt

  • weiß: Der lokale Zweig hat keinen entfernten Zweig
  • grün: Der lokale Zweig entspricht dem Remote-Zweig
  • rot: Der lokale Zweig ist vom entfernten Zweig abgewichen
  • lila: lokaler Zweig ist vor entferntem Zweig (gut für Push)
  • gelb: lokaler Zweig befindet sich hinter entferntem Zweig (gut zum Zusammenführen)

Um es zu installieren, führen Sie es einfach aus

pip3 install -U gita
nr
quelle
2

Wenn sich noch jemand diesen Thread ansieht, überprüfen Sie bitte mein Shell-Skript namens gitme

Sie müssen Ihre lokalen Git-Repos manuell eingeben, aber ich benutze dieses Tool jeden Tag, um mehrere Git-Projekte auf mehreren Computern zusammenzuarbeiten.

Du kannst rennen git clone https://github.com/robbenz/gitme.git

Auch das Skript ist unten veröffentlicht

#!/bin/bash -e

REPOS=( 
/Users/you/gitrepo1
/Users/you/gitrepo2
/Users/you/gitrepo3
/Users/you/gitrepo4
)

MOVE="Moving to next REPO... \n" 

tput setaf 2;echo "What ya wanna do? You can say push, pull, commit, ftp push, or status"; tput sgr0

read input

if [ $input =  "commit" ]
then
    tput setaf 2;echo "Do you want a unique commit message? [y/n]";tput sgr0
    read ans
    if [ $ans = "y" ]
    then 
        for i in "${REPOS[@]}"
        do
            cd "$i"
            tput setaf 6;pwd;tput sgr0 
            git add . -A
            read -p "Commit description: " desc  
            git commit -m "$desc"
            tput setaf 2;echo  $MOVE;tput sgr0 
            sleep 1
        done 
    else 
        for i in "${REPOS[@]}"
        do
            cd "$i"
            tput setaf 6;pwd;tput sgr0 
            git add . -A
            git commit -m "autocommit backup point"
            tput setaf 2;echo  $MOVE;tput sgr0 
            sleep 1
        done
    fi 
elif [ $input = "push" ] || [ $input = "pull" ] || [ $input = "ftp push" ] || [ $input = "status" ]
    then
        for i in "${REPOS[@]}"
do
    cd "$i"
    tput setaf 6;pwd;tput sgr0 
    git $input 
    tput setaf 2;echo  $MOVE;tput sgr0 
    sleep 1
    done 
else tput setaf 1;echo "You have zero friends";tput sgr0 
fi

Ich habe also einen Alias ​​in meinem ~ / .bash_profile eingerichtet alias gitme='sh /path/to/gitme.sh'

RobBenz
quelle
1

Sie sollten rgit im CPAN auschecken, das rekursiv git-Befehle für alle Repositorys in einem Verzeichnisbaum ausführt.

Aus den Dokumenten:

Dieses Dienstprogramm sucht rekursiv in einem Stammverzeichnis (das möglicherweise das aktuelle Arbeitsverzeichnis oder - falls festgelegt - das von der Umgebungsvariablen GIT_DIR angegebene Verzeichnis ist) nach allen Git-Repositorys. Sortieren Sie diese Liste nach dem Repository-Pfad, chdir in jedes sie und führt den angegebenen git-Befehl aus.

Brian Phillips
quelle
1

Ich habe gerade ein Tool erstellt, das macht, was Sie wollen!

  1. Wie kann ich alle abrufen? gmaster fetch
  2. Wie kann ich überprüfen, ob einer von ihnen nicht festgeschriebene Änderungen aufweist? gmaster status
  3. Wie kann ich überprüfen, ob bei einem von ihnen Änderungen zum Zusammenführen vorgenommen wurden? gmaster status

Es heißt gitmaster: https://github.com/francoiscabrol/gitmaster

Francoiscabrol
quelle
1

Ich habe diese einfache Bash-Funktion in mein .bash_profile geschrieben, um git, maven, gradle oder einen anderen bash-Befehl nur in allen git-Repositorys ausführen zu können:

# usefull function to work with multiple git repositories
all() {
    failed=0
    printf '>>> START RUNNING: "%s" >>>' "$*"
    for d in */; do
        pushd "$d" > /dev/null
        if [ -d ".git" ]
        then
            printf '\n--------------------------------------------\n\n'
            pwd
            eval $@
            if [ $? -ne 0 ]
            then
                failed=1
                break;
            fi
        fi
        popd > /dev/null
    done
    if [ $failed -eq 0 ]
    then
        printf '\n--------------------------------------------\n'
        printf '<<< RAN "%s" WITH SUCCESS!!! <<<' "$*"
    else
        printf '\n<<< FAILED!!! <<<'
    fi
}

Dies kann auf diese Weise verwendet werden

all git st
all git pull
all ./gradlew clean test
etc.
ChaudPain
quelle
man könnte sie auch alle parallel ausführen mit: all './gradlew clean test &'
ChaudPain
0

Haftungsausschluss: Ich arbeite an diesem Tool unter www.repoflow.com

Wie kann ich alle abrufen?
Wie kann ich überprüfen, ob bei einem von ihnen Änderungen zum Zusammenführen vorgenommen wurden?

  • Sie können alle beteiligten Repositorys abrufen (oder sie pushen / ziehen / festschreiben). Nach dem Abrufen wird die Benutzeroberfläche mit dem neuen Repository-Status aktualisiert. Wenn das Repository divergiert, können Sie die Art der Konflikte sehen und mit dem Zusammenführen beginnen.

Geben Sie hier die Bildbeschreibung ein

Wie kann ich überprüfen, ob einer von ihnen nicht festgeschriebene Änderungen aufweist?

  • Auf der Benutzeroberfläche können Sie den Status der Dateien für jedes Repository anzeigen (Sie können sie einzeln oder in großen Mengen hinzufügen / entfernen).

Geben Sie hier die Bildbeschreibung ein

Ich arbeite daran, aber dies löst auch die OP-Fragen und hilft bei der Verwaltung mehrerer Repositorys im Allgemeinen. Sie können die Benutzeroberfläche oder die zugrunde liegende GraphQL-API verwenden, um Ihre eigenen Skripte zu erstellen. Bitte betrachten Sie dies als eine weitere Option.

Victor Jimenez
quelle
0

Es gibt ein praktisches Tool zum Abrufen aller mehreren Repositorys. git-pull-allist ein Befehlszeilenprogramm, das asynchron auf mehreren Git-Repositorys ausgeführt werden kann.

Installation

npm install -g git-pull-all

Verwendung

Angenommen, Sie haben diese Dateien und Verzeichnisse:

~/Projects/
  cool-examples/
    .git/
  funny-movies/
  my-todos.txt
  super-express/
    .git/

Wenn Sie einen git-pull-allBefehl für ein ~/ProjectsVerzeichnis ausführen , sollte er untergeordnete Git-Repositorys finden (im obigen Fall Cool-Beispiele und Super-Express ) und dann git pullauf jedem von ihnen ausgeführt werden.

$ cd ~/Projects
$ git-pull-all
funny-movies/
Not a git repository
cool-examples/
Already up-to-date.
super-express/
Already up-to-date.
Done!
git-pull-all ~/Projects

GitHub-Link: https://github.com/tatsuyaoiw/git-pull-all

Alper Ebicoglu
quelle
0

Ich verwende Visual Studio-Code. Wir haben ungefähr 20 Bibliotheken in unserer Codebasis, die alle separate Git-Repos sind, und die Registerkarte Quellcodeverwaltung in Visual Studio Code ist ziemlich gut, um auf einen Blick zu sehen, wie weit hinter oder vor lokalen Repos liegen. Es gibt auch Einstellungen, die regelmäßig abgerufen werden müssen, um diese Informationen auf dem neuesten Stand zu halten, sowie eine Schaltfläche zum Aktualisieren.

Es ist nicht so praktisch wie ein Skript, aber wenn es um die Quellcodeverwaltung geht, bin ich gerne derjenige, der Änderungen vornimmt. Es ist ein sehr gut geschriebenes Skript erforderlich, um darauf zu achten, dass Änderungen usw. nicht überschrieben werden. Mit dem VS-Code-Ansatz erhalten Sie schnell eine gute Menge an Informationen, die Sie selbst bearbeiten können.

Hier ist ein Screenshot davon, wie es aussieht:

Quellcodeverwaltungsfenster in VS Code

Ty Deuty
quelle
0

Ich habe eine großartige Lösung gefunden, um aus allen Unterverzeichnissen mit einem .git-Ordner aus dem aktuellen Zweig zu ziehen, selbst wenn für jedes Repo ein anderer Zweig ausgecheckt ist. Der Befehl ist einzeilig, flexibel genug, um für verschiedene Git-Befehle geändert zu werden, und kann als Alias ​​verwendet werden.

Kopieren Sie einfach Folgendes und fügen Sie es ein:

find . -type d -maxdepth 2 -name .git -exec sh -c 'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)' {} \;

Brechen sie ab:

find . -type d -maxdepth 2 -name .git 

Suchen Sie alle Verzeichnisse (-typ d) im aktuellen Verzeichnis (find.) Mit dem Namen ".git" (-name .git) und suchen Sie maximal zwei Verzeichnisse tief (2 statt 1, da wir nach dem suchen Git-Ordner im Git-Repo-Ordner).

-exec sh -c 

Führen Sie den folgenden Shell-Befehl aus (exec sh -c)

'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)'

Wechseln Sie in das erste Argument (cd $ 0), wechseln Sie das Verzeichnis um eine Ebene nach oben, um den .git-Ordner (cd ..) zu verlassen, und führen Sie dann den Git-Pull-Ursprung aus, während Sie den Zweig angeben, indem Sie git rev-parse ... für den aktuellen Zweig ausführen HEAD Commit.

{} \;

Das "{}" ist der relative Pfad des Ergebnisses, den wir vom anfänglichen Suchbefehl erhalten . Das ; wird verwendet, um den Befehl zu beenden.

Getestet unter MacOS 10.14.6 unter zsh. Funktioniert nur, wenn entfernte und lokale Zweigstellen den gleichen Namen haben, AFAIK.

Sie können dies ändern, um den Status abzurufen. Ich gehe davon aus, dass Sie möglicherweise Argumente hinzufügen können, um dies flexibler zu gestalten, aber ich habe es noch nicht versucht.

Ahmed Tawfik
quelle
0

Ich verwende die Multi-Cursor-Auswahl- / Mehrzeilen-Bearbeitungsfunktion meines Code-Editors (VS-Code), um ein Batch- / Shell-Skript zu erstellen und es auf einmal auszuführen. Mit dieser einfachen, dummen Lösung weiß ich, was ich tue und was ich von der Ausführung dieser Befehle erwarten kann. Kein Raten, kein Lernen, keine Anpassung erforderlich. Ein weiterer Grund ist, dass ich jedes Mal Befehle für verschiedene Repos ausführen möchte, die sich in einem gemeinsamen übergeordneten Verzeichnis befinden.

IsmailS
quelle
-1

https://github.com/wwjamieson3/envisionTools hat ein Bash-Skript namens gitstat, das dies und vieles mehr tut. Es ist GNU- und Mac-kompatibel. Auf Anfrage kann es Abrufe von Fernbedienungen durchführen. Es zeigt nicht verfolgte, geänderte, hinzugefügte, gelöschte und bereitgestellte Dateien. Es unterscheidet sich von Fernbedienungen dadurch, dass nicht zusammengeführte Commits auf Fernbedienungen und nicht gepusste lokale Commits angezeigt werden. Es kann auch farbcodierte Ergebnisse im Zusammenfassungs- oder Detailmodus und sogar in HTML anzeigen. Es verwendet Lokalisieren statt Suchen, da es unendlich schneller ist und sogar dazu auffordert, Ihre Lokalisierungsdatenbank zu aktualisieren, wenn sie zu alt wird.

William Jamieson
quelle
2
Vielen Dank für Ihre Antwort! Bitte lesen Sie die FAQ zur Eigenwerbung sorgfältig durch. Beachten Sie auch , dass Sie jedes Mal, wenn Sie auf Ihre eigene Website / Ihr eigenes Produkt verlinken, einen Haftungsausschluss veröffentlichen müssen.
Andrew Barber
3
Leider ist der Link github wwjamieson3 / envisionTools defekt.
Brenda J. Butler
@williamJamieson is envisionTools ist ein privates GitHub-Repository?
Eebbesen
-5

Es sieht so aus, als wäre es ziemlich einfach, ein Skript dafür zu schreiben. Im Wesentlichen muss es über die Repositorys iterieren und dann Befehle wie git ls-files, git diff und git log verwenden.

iny
quelle
Ich weiß, dass es spät ist, aber könnten Sie das Skript veröffentlichen?
10b0
Es gibt kein "Skript". Ich verwende ein Skript, das ich für meine eigenen Bedürfnisse geschrieben habe, aber es ist nicht generisch.
Uhr
"git diff" ist eigentlich schwierig, wenn Sie eine einzelne Diff-Datei erhalten möchten, die mit einem einzigen Patch-Befehl zurückgesetzt und erneut angewendet werden kann.
Proski
4
Wörtlich sollte jede der Antworten die akzeptierte Antwort sein, aber dies.
Kennet Celeste