2015-06-17 22 views
6

Ho fatto qualcosa di estremamente stupido. Ho inserito un codice nel mio codice e ho inserito il codice nel ramo principale. Ho spinto un po 'di volte in seguito, così le persone non tirano le cose cattive, ma posso ancora trovare il simbolo nella cronologia dei commit.Git - Rimuovi commit dalla cronologia

C'è un modo per eliminare il commit dalla cronologia? Modifica: non voglio aggiungere il file a gitignore perché abbiamo bisogno di quel file.

Grazie

+0

Quindi ecco un suggerimento importante: controlla sempre i tuoi commit uno per uno prima di spingerli. SEMPRE. – ckruczek

+0

possibile duplicato di [Rimuovi i file sensibili e i loro commit dalla cronologia Git] (http: // StackOverflow.it/questions/872565/remove-sensitive-files-and-their-commits-from-git-history) –

risposta

0

No, Git aggiungere solo le modifiche alla storia. Leggi l'articolo this per ulteriori informazioni.

+4

Questo non è completamente corretto. È possibile rimuovere i commit ma questo comporta una riscrittura della cronologia. – ckruczek

5

Una volta che si spinge al repo, davvero non si vuole andare a cambiare la storia. Tuttavia, se sei assolutamente sicuro di che nessuno ha tirato/recuperato dal repository dopo il commit incriminato, hai 2 opzioni.

Se si desidera rimuovere completamente il commit (e ogni commit successivo), eseguire un git reset --hard ABC~ (supponendo che l'hash del commit sia ABC). Quindi fare un git push -f.

Se si desidera modificare quel commit e conservare i commit successivi, fare un git rebase -i ABC~. Questo lancerà il tuo editor, mostrando l'elenco dei tuoi commit, a partire da quello offensivo. Cambia il flag da "pick" a "e", salva il file e chiudi l'editor. Quindi apportare le modifiche necessarie ai file e fare un git commit -a --amend, quindi fare git rebase --continue. Segui tutto con uno git push -f.

Voglio ripetere, queste opzioni sono disponibili solo se nessuno ha eseguito un pull o un recupero che contiene il commit incriminato. Se lo fanno, fare questi passaggi peggiorerà le cose.

1

Se è solo sul PC locale (o nessuno controllato le vostre modifiche):

1) Uso:

git log

per trovare il commit si desidera rimuovere . Copia hash (la lunga sqeence come e8348ebe553102018c ...).

2) Utilizzare:

git rebase -i your_commit_hash_code_comes_here

è sufficiente rimuovere il commit non è necessario e salvare il file.

Interactive git rebase consente di correggere anche il commit interrotto: non è necessario rimuoverlo.

Se hai apportato modifiche al server o qualcuno ha già ricevuto le tue modifiche - non cambia mai la cronologia - causerebbe seri problemi al tuo team.

Problemi correlati