abbiamo la seguente storiaSposta ramo all'altro punto della storia
start master public
| | |
v v v
o---o-- ... --o---o---o
Purtroppo abbiamo fatto alcuni commit nel ramo master
contenente alcuni dati sensibili. Abbiamo modificato questo in un ramo separato chiamato pubblico. Ora vogliamo "tagliare" il ramo public
per ottenere uno "stato" completo e pulito in public
ma senza le parti della cronologia compromettente ancora contenute tramite master
. In altre parole, vogliamo che il seguente nuova storia:
start master
| |
v v
o---o-- ... --o---o
\
o <- public
Ora check-out public
deve portare allo stesso albero di lavoro come nella situazione originaria, ma senza i dettagli della cronologia sensibili. Successivamente disattiviamo il vecchio ramo master
: lo rinominiamo in unsafe
ed elaboriamo un nuovo ramo master
dal nuovo ramo public
. In questo modo conserviamo la vecchia storia nel unsafe
e sono in grado di spingere il ramo public
in pubblico senza preoccupazioni:
start unsafe
| |
v v
o---o-- ... --o---o
\
o---o-- ... --o <-- public
\ /
o-- .. --o-- ... --o <-- master
Quali sono i git destra comanda di raggiungere questo obiettivo?
PS: Naturalmente è possibile effettuare il checkout start
, creare un nuovo ramo e impegnare l'intero albero di lavoro del ramo public
. Ma deve esserci un modo diverso, più elaborato e divertente!
@phlipsy questo non è in realtà fuori tema su SU, ma lo migrerò in SO come richiesto, in modo da non farlo devo ripubblicare. – DMA57361
Queste informazioni possono aiutare: http://help.github.com/remove-sensitive-data/. – Barend
Dai un'occhiata a http://stackoverflow.com/questions/872565/how-do-i-remove-sensitive-files-from-gits-history – Chris