C'è un modo per rimuovere un changeset remoto o rimuovere un intero changeset? Ho accidentalmente spinto un file .war
in un repository remoto e voglio rimuoverlo.Mercurial: Rimuovi changeset dal ramo remoto
risposta
Ho usato l'estensione hg mqueue per modificare la cronologia. Sembra che abbia funzionato. Grazie a tutti.
Mercurial cerca molto duramente per mantenere i tuoi dati al sicuro, quindi in genere non puoi cambiare la cronologia.
Detto questo, esistono numerose estensioni per Mercurial che consentono di cambiare facilmente la cronologia in ogni caso. C'è un page on the wiki about editing history. Quella pagina spiega anche le conseguenze.
Nel tuo caso specifico, devi chiederti se gli altri avranno già tirato il tuo changeset? Se è così, allora anche se lo rimuovi, esisterà ancora nei loro cloni e potresti stare meglio accettando l'errore.
Se si decide di rimuoverlo, suggerisco di utilizzare hg clone
per ottenere una copia senza di esso. Questo è il modo sicuro poiché lascerà sempre un backup. Se spinto [z]
al repository remoto:
[x] --- [y] --- [z]
e ora desidera rimuovere, quindi accedere al server e fare
hg clone -r y repo repo-without-z
Poi repo-without-z
conterrà tutti changests fino ad [y]
- vale a dire, [z]
saranno stati rimossi:
[x] --- [y]
È quindi possibile continuare a lavorare e spingere un nuovo changeset:
[x] --- [y] --- [w]
Se avessi tirato il [z]
di modifiche già e ora tirare [w]
vedrò due teste nel repository:
[w]
/
[x] --- [y] --- [z]
Questo non è pericoloso per sé - ma la gente può essere sorpresi. Se rimuovo [z]
dal mio clone, finirò con lo stesso repository di te. Ma, come scritto sopra, questo potrebbe essere poco pratico se hai molti utenti.
È inoltre possibile utilizzare la striscia MQ extension a sul posto. In questo modo non farai un nuovo clone.
Infine, se si è certi che il push era l'ultima operazione eseguita sul server, è possibile utilizzare hg rollback
per rimuovere l'ultima transazione. Ma non farlo se sei l'unico che può inviare al repository, altrimenti potresti finire con il rollback di una transazione diversa.
Se il repository si trova su Bitbucket, non è possibile accedere al server. Ma Bitbucket ha recentemente aggiunto una funzionalità strip alla sua interfaccia web. Cerca "Gestione repository" nella sezione "Amministrazione".
Grazie per il tuo post. In effetti sto usando bitbucket, stavo cercando di rimuovere un commit dal repository di bitbucket, ma sembra che non sia possibile. Anche usando strip, bitbucket mi dice che sto occupando molto spazio (a causa della guerra che ho caricato). –
Sì, Bitbucket esegue un backup delle revisioni spogliate e il backup conta alla tua quota :-( Puoi eliminare il repository su Bitbucket, crearlo di nuovo con lo stesso nome e spingere dal clone locale. –
Il mio commento sopra non è più valido, per favore vedi la risposta di [Jesper's] (http://stackoverflow.com/a/909290/110204). –
Bitbucket offre un pacchetto (backup) in fase di rimozione, e questo corrisponde a non contro la tua quota. Il motivo per cui sembra farlo, è solo perché non abbiamo invalidato la chiave di cache specificando quanto spazio si utilizza.
Questo è un bug nel nostro sistema e verrà risolto.Fino ad allora, state certi che il changeset è stato rimosso e il backup è gratuito :-)
Nice Jesper, grazie per essere passato da :-) –
ho avuto un caso simile in cui voglio rimuovere un ramo fusione "A" di modifiche di ramo "Dev" in remoto utilizzando TortoiseHg:
- Creare ramo AA di ramo genitore ramo di A; la sua origine
- Unisci A in AA (directory di lavoro) e assicurati che l'opzione: "Elimina tutte le modifiche dall'altra revisione" sia selezionata.
- Unisci AA nel ramo Dev (con un messaggio di commit che indica che le modifiche del ramo A sono state rimosse).
Vedrete quel ramo Le modifiche non sono più presenti in Dev.
Questo ha funzionato per me, ottima soluzione. Vorrei solo chiarire che per (2), penso che tu intenda "unire A in AA" e scartare. Questo è quello che ho fatto comunque, e quindi il passaggio 3 ha creato un bel commit che ha annullato tutte le modifiche indesiderate. –
- 1. mercurial: verifica se un ramo contiene un changeset
- 2. Git - rimuovi commit con changeset vuoto utilizzando il ramo filtro
- 3. Mercurial Rimuovi cronologia
- 4. Mercurial: tagga un changeset particolare
- 5. Mercurial Fusione solo di alcuni changeset
- 6. Subversion - come spostare alcuni changeset dal trunk a un ramo?
- 7. Rinomina ramo remoto
- 8. Unisci solo un changeset da un altro ramo
- 9. Come modificare un changeset "pubblico" in Mercurial
- 10. Esaminare un singolo changeset in Mercurial
- 11. Determinazione del changeset "attivo" con Mercurial?
- 12. Come innestare un changeset fusione con Mercurial
- 13. Come rebase un changeset immutabile con Mercurial?
- 14. Ottenere punta changeset di distanza repository Mercurial
- 15. Per Mercurial, possiamo spingere alcuni changeset e non spingerli?
- 16. Git - Sostituire ramo locale con ramo remoto
- 17. Reimposta ramo remoto tracciato
- 18. Git Merge - Non unire tutte le modifiche dal ramo remoto
- 19. git request-pull dal ramo locale al master remoto
- 20. Invia al repository Mercurial remoto
- 21. Rinominare il ramo git remoto
- 22. mercurial imposta un ramo come nuovo ramo predefinito
- 23. Mercurial to Mercurial to Subversion Workflow Problem
- 24. Rimuovi file dal commit modificato
- 25. Trovare i changeset in mercurial estraendo la patch
- 26. Come eliminare il ramo Mercurial dopo l'unione
- 27. Per annullare "abortire: spinta crea nuove teste remote sul ramo" in Mercurial
- 28. Pushet changeset segreti
- 29. Impossibile eliminare il ramo remoto in git
- 30. Git - Come unire un ramo remoto nel master remoto
ya, http: //mercurial.selenic. com/wiki/EditingHistory ti consente di tornare alle tue revisioni ed eliminare singole revisioni o apportare modifiche (rimuovere le password) nelle tue revisioni – xster