2012-04-03 4 views
31

У меня есть установленное hg shelve (не чердачное) расширение, и я хочу сбросить патч. В git это будет git stash drop. Как это сделать, используя расширение полки?hg shelve эквивалент git stash drop

ответ

28

Mercurial shelve extension хранит патчи под .hg/shelved. Каждый из них представляет собой простой файл исправлений, а имя файла - имя патча. Таким образом, чтобы удалить патч под названием «mypatch» Я могу просто удалить файл «mypatch» от .hg/полки:

rm .hg/shelved/mypatch

+2

См. [Ответ BennyMcBenBen] (http://stackoverflow.com/a/25558246/1286571), чтобы удалить полки с помощью пользовательского интерфейса hg shelve. – ForeverWintr

28

Если вы не хотите использовать полки, вы можете сделать это следующим образом ,

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

Чтобы избежать создания файлов '* .orig', используйте:' hg revert -aC' –

0

Я создал два файла на основе ответа minaz в:

hgshelve

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

hgunshelve

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

Поместите их в ~/bin. Вам нужно sudo apt-get install trash-cli для команды trash (или изменить скрипт либо не удалить файл исправления, либо использовать rm, если хотите).

25

Из Mercurial shelve documentation (или с помощью hg help shelve):

Чтобы удалить определенное сукно изменения, используйте "--delete". Чтобы удалить все отложенные изменения, используйте «--cleanup».

Варианты:

-d --delete удалить именованный полку изменения (ы)

Так что, если ваш патч был назван my-patch, то вы бы удалить его с помощью:

hg shelve -d my-patch 
+0

Это должен быть принятый ответ. – gcedo

Смежные вопросы