【发布时间】:2012-04-17 13:33:15
【问题描述】:
我安装了 hg shelve(不是阁楼)扩展,我想删除一个补丁。在 git 中它将是 git stash drop。如何使用搁置扩展来做到这一点?
【问题讨论】:
我安装了 hg shelve(不是阁楼)扩展,我想删除一个补丁。在 git 中它将是 git stash drop。如何使用搁置扩展来做到这一点?
【问题讨论】:
来自Mercurial shelve documentation(或使用hg help shelve):
要删除特定搁置的更改,请使用“--delete”。要删除所有搁置的更改,请使用“--cleanup”。
选项:
-d --delete 删除命名搁置的更改
因此,如果您的补丁名为 my-patch,那么您将使用以下命令将其删除:
hg shelve -d my-patch
【讨论】:
如果不想使用搁板,可以通过以下方式进行。
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
【讨论】:
*.orig 文件,请使用:hg revert -aC
Mercurial shelve 扩展将补丁存储在 .hg/shelved 下。每个都是一个简单的补丁文件,文件名就是补丁的名字。所以要删除一个名为“mypatch”的补丁,我可以简单地从 .hg/shelved 中删除文件“mypatch”:
rm .hg/shelved/mypatch
【讨论】:
我根据 minaz 的回答创建了两个 shell 脚本:
hgshelve
#!/bin/sh
hg diff > $1 && hg revert -a
hgunshelve
#!/bin/sh
hg import --no-commit $1 && trash $1
将它们放入~/bin。对于trash 命令,您需要sudo apt-get install trash-cli(或者修改脚本以不删除补丁文件,或者如果您愿意,可以使用rm)。
【讨论】: