From b6fe9d4bc29534fb29352465669d059bad65a922 Mon Sep 17 00:00:00 2001 From: christian Date: Sun, 26 Apr 2026 19:38:42 +0200 Subject: [PATCH] Initialer Commit --- .gitignore | 3 ++ Data/logo.jpg | Bin 0 -> 10575 bytes README.md | 1 + git-branch-new.sh | 15 ++++++++ git-init-here.sh | 65 +++++++++++++++++++++++++++++++++ git-switch.sh | 39 ++++++++++++++++++++ git-toolbox.sh | 36 +++++++++++++++++++ git-up.sh | 89 ++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 248 insertions(+) create mode 100644 .gitignore create mode 100644 Data/logo.jpg create mode 100644 README.md create mode 100755 git-branch-new.sh create mode 100755 git-init-here.sh create mode 100755 git-switch.sh create mode 100755 git-toolbox.sh create mode 100644 git-up.sh 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 0000000000000000000000000000000000000000..dab82701bbda0ccabc86fda7384f12f516063924 GIT binary patch literal 10575 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 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