commit b6fe9d4bc29534fb29352465669d059bad65a922 Author: christian Date: Sun Apr 26 19:38:42 2026 +0200 Initialer Commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e4f1e76 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.log +.env +node_modules/ diff --git a/Data/logo.jpg b/Data/logo.jpg new file mode 100644 index 0000000..dab8270 Binary files /dev/null and b/Data/logo.jpg differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..46f63d8 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# git-toolbox diff --git a/git-branch-new.sh b/git-branch-new.sh new file mode 100755 index 0000000..3ad72a0 --- /dev/null +++ b/git-branch-new.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Erstellt einen neuen Branch und wechselt zu diesem + +if [ -z "$1" ]; then + echo "❌ Fehler: Bitte gib einen Namen für den neuen Zweig an." + echo "Nutzung: git-branch-new [name]" + exit 1 +fi + +BRANCH_NAME=$1 + +# Neuen Branch erstellen und wechseln +git checkout -b "$BRANCH_NAME" + +echo "✅ Zweig '$BRANCH_NAME' wurde erstellt und aktiviert." diff --git a/git-init-here.sh b/git-init-here.sh new file mode 100755 index 0000000..2cbfa80 --- /dev/null +++ b/git-init-here.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# 1. Aktuelles Verzeichnis und Name ermitteln +CURRENT_DIR=$(pwd) +PROJECT_NAME=$(basename "$CURRENT_DIR") + +echo "--- Initialisiere Git-Projekt in: $CURRENT_DIR ---" + +# 2. Git initialisieren, falls noch nicht geschehen +if [ -d ".git" ]; then + echo "Info: Hier existiert bereits ein Git-Repository. Fahre mit Konfiguration fort..." +else + git init + echo "Git-Repository wurde initialisiert." +fi + +# 3. Dateien nur erstellen, wenn sie NICHT existieren +if [ ! -f "README.md" ]; then + echo "# $PROJECT_NAME" > README.md + echo "Check: README.md wurde neu erstellt." +else + echo "Check: Bestehende README.md gefunden – wird beibehalten." +fi + +if [ ! -f ".gitignore" ]; then + cat < .gitignore +*.log +.env +node_modules/ +.DS_Store +EOF + echo "Check: .gitignore wurde neu erstellt." +else + echo "Check: Bestehende .gitignore gefunden – wird beibehalten." +fi + +# 4. Erster lokaler Commit (nur wenn Änderungen da sind) +git add . +if git diff-index --quiet HEAD --; then + echo "Info: Keine neuen Änderungen zum Committen." +else + git commit -m "Initialer Commit oder Update durch git-init" + git branch -M main +fi + +# 5. Remote URL abfragen +echo "------------------------------------------------" +echo "Damit der Push funktioniert, wird eine Remote-URL benötigt." +read -p "Remote URL (Enter zum Überspringen): " remote_url + +if [ -n "$remote_url" ]; then + # Sicherstellen, dass kein alter 'origin' stört + git remote remove origin 2>/dev/null + git remote add origin "$remote_url" + echo "Remote 'origin' wurde auf $remote_url gesetzt." + + # 6. Erster Push + echo "Führe Push auf 'main' aus..." + git push -u origin main +else + echo "Keine URL angegeben. Das Repo bleibt lokal." +fi + +echo "------------------------------------------------" +echo "--- Fertig! Alles sicher in $PROJECT_NAME ---" \ No newline at end of file diff --git a/git-switch.sh b/git-switch.sh new file mode 100755 index 0000000..081548c --- /dev/null +++ b/git-switch.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# --- Git-Toolbox: Hybrider Zweig-Navigator --- + +# 1. Zweige einlesen +branches=($(git branch --format='%(refname:short)')) +current=$(git rev-parse --abbrev-ref HEAD) + +# 2. Check: Wurde das Skript mit dem Argument --gui aufgerufen? +if [[ "$1" == "--gui" ]]; then + # --- GUI MODUS (Zenity) --- + # Wir erstellen eine Liste für Zenity, wobei der aktuelle Branch markiert ist + CHOICE=$(zenity --list \ + --title="Zweig wechseln" \ + --column="Zweige" \ + "${branches[@]}" \ + --width=300 --height=400) + + if [ -n "$CHOICE" ]; then + git checkout "$CHOICE" + zenity --info --text="Gewechselt zu $CHOICE" --timeout=2 + fi +else + # --- TERMINAL MODUS (Klassisch) --- + echo "--- Verfügbare Zweige ---" + for i in "${!branches[@]}"; do + if [[ "${branches[$i]}" == "$current" ]]; then + echo " [$i] ${branches[$i]} (AKTUELL)" + else + echo " [$i] ${branches[$i]}" + fi + done + echo "--------------------------" + read -p "Nummer eingeben: " choice + if [[ "$choice" =~ ^[0-9]+$ ]] && [ "$choice" -lt "${#branches[@]}" ]; then + git checkout "${branches[$choice]}" + else + echo "Ungültige Wahl." + fi +fi diff --git a/git-toolbox.sh b/git-toolbox.sh new file mode 100755 index 0000000..a6c1e56 --- /dev/null +++ b/git-toolbox.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# --- Git-Toolbox Dashboard v1.1.0 --- + +while true; do + # 1. Hauptmenü mit Zenity + CHOICE=$(zenity --list \ + --title="Git-Toolbox Dashboard" \ + --column="Aktion" --column="Beschreibung" \ + "Update (git-up)" "Änderungen committen und pushen" \ + "Branch Switch" "Zwischen Zweigen wechseln" \ + "New Branch" "Einen neuen Zweig erstellen" \ + "Init Project" "Neues Repo hier initialisieren" \ + "Beenden" "Programm verlassen" \ + --width=450 --height=350) + + # 2. Logik basierend auf der Auswahl + case $CHOICE in + "Update (git-up)") + git-up + ;; + "Branch Switch") + git-switch --gui + ;; + "New Branch") + NAME=$(zenity --entry --title="Neuer Zweig" --text="Name des neuen Zweigs:") + [ -n "$NAME" ] && git-branch-new "$NAME" + ;; + "Init Project") + git-init-here + ;; + "Beenden" | "") + break + ;; + esac +done diff --git a/git-up.sh b/git-up.sh new file mode 100644 index 0000000..fd4bbf0 --- /dev/null +++ b/git-up.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +# --- Git-Toolbox v1.0.4 --- +# Features: Zweig-Erkennung, Security-Warnung für Main, Hilfe-Funktion (-h) + +# 1. Hilfe-Funktion definieren +show_help() { + echo "Nutzung: git-up [OPTIONEN]" + echo "" + echo "Optionen:" + echo " -m 'Nachricht' Direktes Committen mit dieser Nachricht (überspringt Abfrage)." + echo " -t 'v1.0.0' Erstellt direkt einen Versions-Tag (überspringt Abfrage)." + echo " -h Zeigt diese Hilfe an." + echo "" + echo "Beispiel: git-up -m 'Fix: Login-Bug' -t 'v1.0.5'" + exit 0 +} + +# 2. Variablen initialisieren +COMMIT_MSG="" +TAG_NAME="" + +# 3. Argumente auswerten (Flags) +while getopts "m:t:h" opt; do + case $opt in + m) COMMIT_MSG="$OPTARG" ;; + t) TAG_NAME="$OPTARG" ;; + h) show_help ;; + *) echo "Unbekannte Option. Nutze -h für Hilfe."; exit 1 ;; + esac +done + +# 4. Aktuellen Zweig (Branch) ermitteln +CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) + +if [ -z "$CURRENT_BRANCH" ]; then + echo "❌ Fehler: Dies ist kein Git-Repository!" + exit 1 +fi + +echo "--- Arbeitsverzeichnis: $(pwd) ---" +echo "--- Aktueller Zweig: [$CURRENT_BRANCH] ---" + +# 5. Security-Check: Arbeiten auf dem Hauptstamm +if [[ "$CURRENT_BRANCH" == "main" || "$CURRENT_BRANCH" == "master" ]]; then + echo "⚠️ WARNUNG: Du arbeitest direkt auf dem Hauptzweig ($CURRENT_BRANCH)." + read -p "Bist du sicher, dass du hier direkt pushen willst? (j/n): " confirm + if [[ ! "$confirm" =~ ^[Jj]$ ]]; then + echo "Abbruch. Erstelle einen neuen Zweig mit: git checkout -b feature-name" + exit 0 + fi +fi + +# 6. Änderungen prüfen +CHANGES=$(git status --porcelain) +if [ -z "$CHANGES" ]; then + echo "Info: Keine Änderungen zum Committen." +else + git status -s + # Falls keine Nachricht per Flag kam: Abfragen + if [ -z "$COMMIT_MSG" ]; then + echo "------------------------------------------------" + read -p "Was wurde geändert? (Commit-Nachricht): " COMMIT_MSG + fi + # Fallback auf Zeitstempel + [ -z "$COMMIT_MSG" ] && COMMIT_MSG="Update am $(date +'%d.%m.%Y %H:%M')" + + git add . + git commit -m "$COMMIT_MSG" +fi + +# 7. Tagging (nur wenn gewünscht) +if [ -z "$TAG_NAME" ]; then + echo "------------------------------------------------" + read -p "Neuer Tag (z.B. v1.0.4) oder Enter zum Überspringen: " TAG_NAME +fi + +# 8. Intelligenter Push zum aktuellen Zweig +if [ -n "$TAG_NAME" ]; then + git tag -a "$TAG_NAME" -m "Version $TAG_NAME" + echo "Pushe Commits und Tags zu: origin/$CURRENT_BRANCH..." + git push origin "$CURRENT_BRANCH" --follow-tags +else + echo "Pushe Commits zu: origin/$CURRENT_BRANCH..." + git push origin "$CURRENT_BRANCH" +fi + +echo "------------------------------------------------" +echo "✅ Fertig! Alles sicher im Zweig '$CURRENT_BRANCH' gespeichert." \ No newline at end of file