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.
Lo script push.sh lavora su qualunque repository Git locale, purché il percorso venga passato a runtime.
Funziona cosi:
- riceve il path della repository con
-r - riceve il messaggio di commit con
-m - rileva il branch corrente oppure usa quello passato con
-b - usa il remote
originoppure quello passato con-o - aggiunge tutti i file o solo quelli specificati con
-p - crea il commit
- esegue il push su GitHub
scripting/
├── push.sh
└── README.md
Prima di usare lo script servono:
bashgit- una repository Git locale inizializzata
- un remote GitHub configurato nella repository, di solito
origin
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"| 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 |
./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Aggiornamento generale"Se sei gia dentro la repo:
./push.sh -r . -m "Aggiornamento generale"./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Aggiornamento generale" -b main./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Aggiornamento generale" -o upstream./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Aggiorno README e appunti" -p README.md -p appunti/./push.sh -r /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti -m "Test script" -nSe una cartella non e ancora una repository Git:
cd /percorso/della/cartella
git initVerifica che Git la riconosca:
git rev-parse --show-toplevelgit 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.
git -C /percorso/repo remote -vSe il comando non stampa nulla, la repository non e ancora collegata a GitHub.
git -C /percorso/repo remote add origin https://github.com/TUO-USER/TUO-REPO.gitEsempio reale:
git -C /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti remote add origin https://github.com/SimoneRemoli/StudyHub.gitgit -C /percorso/repo remote -vOutput 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.
- crea o modifica un file nella repository
- esegui il dry-run
- verifica che branch, remote e file siano corretti
- esegui il comando reale
Comandi:
touch /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti/test-push.txtcd /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"git -C /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti statusgit -C /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti branch --show-currentgit -C /Users/simoneremoli/Desktop/Artemis/TuttiGliAppunti remote -vQuando 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.
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.gitPuoi passare manualmente il branch:
./push.sh -r /percorso/repo -m "Commit" -b mainSignifica che nella repository non ci sono file nuovi o modifiche in staging.
Controlla con:
git -C /percorso/repo statusPer vedere l'help dello script:
./push.sh -hpush.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.