Skip to content

SimoneRemoli/github-push-automation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Push Automation for GitHub

Script Bash parametrico per automatizzare il flusso di pubblicazione di una repository Git su GitHub.

L'obiettivo e semplice: lanciare un solo comando per:

  • aggiungere i file modificati
  • creare un commit
  • eseguire il push sul remote configurato

Il tutto senza preimpostare una repository fissa nello script.

Panoramica

Lo script push.sh lavora su qualunque repository Git locale, purché il percorso venga passato a runtime.

Funziona cosi:

  1. riceve il path della repository con -r
  2. riceve il messaggio di commit con -m
  3. rileva il branch corrente oppure usa quello passato con -b
  4. usa il remote origin oppure quello passato con -o
  5. aggiunge tutti i file o solo quelli specificati con -p
  6. crea il commit
  7. esegue il push su GitHub

File del progetto

scripting/
├── push.sh
└── README.md

Requisiti

Prima di usare lo script servono:

  • bash
  • git
  • una repository Git locale inizializzata
  • un remote GitHub configurato nella repository, di solito origin

Utilizzo rapido

Dalla cartella scripting:

./push.sh -r /percorso/repo -m "Messaggio commit"

Esempio concreto:

./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Aggiorno gli appunti"

Se sei gia dentro la cartella della repository che vuoi pubblicare, non serve riscrivere il path completo: puoi usare . per indicare la directory corrente.

Esempio:

cd /Users/simoneremoli/Desktop/Artemis/scripting
./push.sh -r . -m "Automata"

Parametri disponibili

Parametro Significato
-r Percorso della repository Git
-m Messaggio del commit
-b Branch da usare; se omesso usa quello corrente
-o Remote da usare; default origin
-p File o cartelle specifici da aggiungere; opzione ripetibile
-n Dry-run, mostra i comandi senza eseguirli
-h Mostra l'help

Esempi d'uso

1. Push standard

./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Aggiornamento generale"

Se sei gia dentro la repo:

./push.sh -r . -m "Aggiornamento generale"

2. Push su un branch specifico

./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Aggiornamento generale" -b main

3. Push verso un remote diverso da origin

./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Aggiornamento generale" -o upstream

4. Push solo di file o cartelle specifiche

./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Aggiorno README e appunti" -p README.md -p appunti/

5. Simulazione senza eseguire il push

./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Test script" -n

Come preparare una repository locale

Se una cartella non e ancora una repository Git:

cd /percorso/della/cartella
git init

Verifica che Git la riconosca:

git rev-parse --show-toplevel

Come collegare la repository locale a GitHub

git init crea solo la repository locale. Non collega automaticamente la cartella a GitHub.

Per poter fare push, devi configurare un remote. Quello standard si chiama origin.

1. Controllare se il remote esiste gia

git -C /percorso/repo remote -v

Se il comando non stampa nulla, la repository non e ancora collegata a GitHub.

2. Aggiungere origin

git -C /percorso/repo remote add origin https://github.com/TUO-USER/TUO-REPO.git

Esempio reale:

git -C /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti remote add origin https://github.com/SimoneRemoli/StudyHub.git

3. Verificare il collegamento

git -C /percorso/repo remote -v

Output atteso:

origin  https://github.com/TUO-USER/TUO-REPO.git (fetch)
origin  https://github.com/TUO-USER/TUO-REPO.git (push)

Da questo momento, push.sh sa dove inviare il contenuto della repository.

Flusso consigliato di utilizzo

Caso A. Prima prova sicura

  1. crea o modifica un file nella repository
  2. esegui il dry-run
  3. verifica che branch, remote e file siano corretti
  4. esegui il comando reale

Comandi:

touch /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti/test-push.txt
cd /Users/simoneremoli/Desktop/Artemis/scripting
./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Test push script" -n
./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Test push script"

Caso B. Controllo stato della repository prima del push

git -C /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti status
git -C /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti branch --show-current
git -C /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti remote -v

Cosa succede internamente

Quando lanci:

./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Nuovo aggiornamento"

lo script esegue logicamente questo flusso:

cd /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti
git add -A
git commit -m "Nuovo aggiornamento"
git push -u origin <branch-corrente>

Se usi -p, al posto di git add -A aggiunge solo i path indicati.

Se non ci sono modifiche in staging, lo script evita di creare un commit vuoto.

Errori comuni

Il remote 'origin' non esiste nella repo

Significa che la repository locale non e collegata a un remote chiamato origin.

Soluzione:

git -C /percorso/repo remote add origin https://github.com/TUO-USER/TUO-REPO.git

Impossibile determinare il branch corrente

Puoi passare manualmente il branch:

./push.sh -r /percorso/repo -m "Commit" -b main

Nessuna modifica da committare

Significa che nella repository non ci sono file nuovi o modifiche in staging.

Controlla con:

git -C /percorso/repo status

Help integrato

Per vedere l'help dello script:

./push.sh -h

Conclusione

push.sh e pensato per rendere piu rapido e pulito un processo ripetitivo di sviluppo:

  • nessuna repository hardcoded
  • supporto a repository diverse
  • supporto a branch e remote personalizzati
  • dry-run per test sicuri
  • sintassi semplice e riutilizzabile

E uno strumento piccolo, ma molto pratico, per standardizzare il push su GitHub con un solo comando.

About

Automazione in Bash per semplificare il workflow Git e pubblicare rapidamente una repository su GitHub con comandi parametrizzati per path, commit, branch e remote.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages