2012-04-03 33 views
31

Tôi có phần mở rộng hg (không phải gác mái) được cài đặt và tôi muốn thả một bản vá. Trong git nó sẽ là git stash drop. Làm thế nào để tôi làm điều này bằng cách sử dụng phần mở rộng giá đỡ?hg tương đương với git stash drop

Trả lời

28

Tiện ích mở rộng lưu trữ Mercurial lưu trữ các bản vá dưới .hg/shelved. Mỗi tệp là một tệp vá đơn giản và tên tệp là tên của bản vá. Vì vậy, để loại bỏ một miếng vá gọi là 'mypatch' Tôi chỉ đơn giản là có thể loại bỏ các tập tin 'mypatch' từ .hg/hoãn:

rm .hg/shelved/mypatch

+2

Xem [Câu trả lời của BennyMcBenBen] (http://stackoverflow.com/a/25558246/1286571) để biết cách loại bỏ các kệ bằng cách sử dụng giao diện người dùng hg. – ForeverWintr

28

Nếu bạn không muốn sử dụng kệ, bạn có thể làm điều đó theo cách sau .

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

Để tránh tạo tập tin '* .orig':' hg revert -aC' –

0

Tôi tạo ra hai kịch bản shell dựa trên câu trả lời của minaz:

hgshelve

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

hgunshelve

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

Đặt chúng trong ~/bin. Bạn cần sudo apt-get install trash-cli cho lệnh trash (hoặc sửa đổi tập lệnh để không xóa tệp bản vá hoặc sử dụng rm nếu bạn muốn).

25

Từ Mercurial shelve documentation (hoặc sử dụng hg help shelve):

Để xóa những thay đổi có ngăn cụ thể, sử dụng "--delete". Để xóa tất cả các thay đổi được đặt, hãy sử dụng "--cleanup".

lựa chọn:

-d --delete xóa các thay đổi hoãn tên (s)

Vì vậy, nếu bản vá của bạn được gọi là my-patch, sau đó bạn sẽ xóa nó bằng cách sử:

hg shelve -d my-patch 
+0

Đây phải là câu trả lời được chấp nhận. – gcedo

Các vấn đề liên quan