Domanda banale su git

Sto cercando di tornare indietro nel tempo con le commit di git, ma
qualcosa mi sfugge. Mi trovo in questa situazione:

$git log --oneline
b3242b5 new GemFile
5f5cb2d Align before exporting on Heroku
a7db640 Bugfixes

$git remote -v
origin https://[email protected]/myuser/prj.git (fetch)
origin https://[email protected]/myuser/prj.git (push)

e vorrei eliminare l’ultima commit che e’ un banale aggiornamento del
Gemfile

$ll Gemfile
-rwxrwxr-x 1 flex flex 2188 Dec 28 13:19 Gemfile*
$git reset --hard b3242b55
HEAD is now at b3242b5 new GemFile
$ll Gemfile
-rwxrwxr-x 1 flex flex 2188 Dec 28 13:19 Gemfile*

provo a fare un git pull e ritorno alla situazione di partenza. Cosa
sbaglio ?


FleX
Success is the maximum utilization of the ability that you have
[Linux User #347703 PGP Key ID: 98AA9D3E
FingerPrint: 7D25B 0CE4 898A 22CB F765 E2A5 88B7 4C5C 98AA 9D3E]

Dovresti git push force dopo il reset. Questo forzer la
sincronizzazione del branch remoto con lo stato del branch locale.

On 12/28/14 17:47, Luca P. wrote:

Dovresti git push force dopo il reset. Questo forzer la sincronizzazione del
branch remoto con lo stato del branch locale.

Ma in locale ho ancora l’ultima commit, quello che desidero e’fare un
pull della commit precedente.


FleX
Success is the maximum utilization of the ability that you have
[Linux User #347703 PGP Key ID: 98AA9D3E
FingerPrint: 7D25B 0CE4 898A 22CB F765 E2A5 88B7 4C5C 98AA 9D3E]

$git reset --hard b3242b55

Per resettare un commit non devi dare l’id del commit stesso, ma quello
del
precedente, poiché “git reset ” non vuol dire “cancella il
commit
”, ma “vai al commit ”; quindi dovresti usare

$git reset --hard b3242b55^1

o

$git reset --hard 5f5cb2d

Maurizio De Santis

Il giorno 29 dicembre 2014 10:17, FleX [email protected] ha
scritto:

Il pull è un’operazione che ti serve per sincronizzare il repo locale
con un remote. Non penso sia quello che vuoi fare. Prima assicurati di
avere nel repo locale la situazione che vuoi, senza pensare al remote.

Quello che è capito è che vuoi tornare a questo commit: 5f5cb2d e
scartare questo: b3242b5 .

Per fare questo devi fare un git reset:

git reset --hard 5f5cb2d

In questo modo la tua copia locale sarà quello che desideri, ovvero
non conterrà la modifica al Gemfile. A questo punto devi sincronizzare
il tutto con il remote, quindi devi forzare lo stato di master su
origin con la tua situazione locale. Se fai un git pull, la modifica
al Gemfile verrà ripristinata, perchè questa si trova già su origin.
Devi forzare origin in questo modo:

git push --force origin master

come ha già detto Luca.

“Pull della precedente” non ha senso. Origin sta più avanti rispetto
al tuo HEAD, quindi se non modifichi origin il pull applicherà alla
tua copia locale i commit “successivi”, non precedenti.

-f

2014-12-29 10:17 GMT+01:00 FleX [email protected]:

Perfetto, adesso e’ chiaro; inserendo l’id corretto tutto funziona
perfettamente. Grazie 1.000 per il vs aiuto.


FleX
Success is the maximum utilization of the ability that you have
[Linux User #347703 PGP Key ID: 98AA9D3E
FingerPrint: 7D25B 0CE4 898A 22CB F765 E2A5 88B7 4C5C 98AA 9D3E]