2012-04-03 4 views

risposta

28

L'estensione di shelving Mercurial memorizza le patch sotto .hg/shelved. Ciascuno è un semplice file di patch e il nome file è il nome della patch. Quindi, per rimuovere una patch chiamata 'mypatch' posso semplicemente rimuovere il 'mypatch' file .hg/accantonato:

rm .hg/shelved/mypatch

+2

Vedi [risposta di BennyMcBenBen] (http://stackoverflow.com/a/25558246/1286571) per un modo per rimuovere gli scaffali usando l'interfaccia utente di hg shelve. – ForeverWintr

28

Se non si desidera utilizzare scaffali, è possibile farlo nel modo seguente .

hg diff > mylocalchanges.txt 
hg revert -a 
# Do your merge here, once you are done, import back your local mods 
hg import --no-commit mylocalchanges.txt 
+2

Per evitare la creazione di file '* .orig' usare:' hg revert -aC' –

0

ho creato due script di shell in base alla risposta del Minaz:

hgshelve

#!/bin/sh 
hg diff > $1 && hg revert -a 

hgunshelve

#!/bin/sh 
hg import --no-commit $1 && trash $1 

metterli in ~/bin. È necessario sudo apt-get install trash-cli per il comando trash (o modificare lo script per non rimuovere il file di correzione o utilizzare rm se si preferisce).

25

Dal Mercurial shelve documentation (o utilizzando hg help shelve):

Per cancellare specifici cambiamenti accantonato, utilizzare "delete". Per cancellare tutte le modifiche accantonate, usa "--cleanup".

opzioni:

-d --delete eliminare il cambio di nome accantonato (s)

Così, se il cerotto è stato chiamato my-patch, allora si sarebbe eliminarlo utilizzando:

hg shelve -d my-patch 
+0

Questa dovrebbe essere la risposta accettata. – gcedo