私はhg mv -A oldFile newFile
を実行し、間違って新しいファイルを間違って取得しました。水銀で移動/名前変更アクションを元に戻しますか?
私はhg revert newFile
を実行しましたが、行方不明と表示されたファイルは、現在は表示されなくなりました。
どうすれば元の状態に戻り、新しいファイルが不明と表示され、古いファイルが不足していると表示されるのですか?
私はhg mv -A oldFile newFile
を実行し、間違って新しいファイルを間違って取得しました。水銀で移動/名前変更アクションを元に戻しますか?
私はhg revert newFile
を実行しましたが、行方不明と表示されたファイルは、現在は表示されなくなりました。
どうすれば元の状態に戻り、新しいファイルが不明と表示され、古いファイルが不足していると表示されるのですか?
$ hg st
$ mv a b
$ hg st
! a
? b
$ hg mv -A a b
$ hg st
A b
R a
$ hg revert b
$ hg st
? b
$ ls
a b
のでhg revert b
は古いファイルa
を回復しました。今あなたがしなければならないのはhg mv a correct-name
です。
ここには、bashで書かれた "unmove"スクリプトがあります。上部にヘルプテキストがあります。最も重要な点は、このスクリプトには、ファイルの削除を対話的に行わせるオプションがあることです。
#!/bin/bash
# Syntax: $0 [OPTION] DEST
#
# This script is mainly intended to undo the effects of: hg move SOURCE DEST
#
# It first determines which files have been added globally (as if by
# hg add), then it runs:
# hg -v revert DEST
# Finally, it removes all the files that had been added,
# and then reverts them as well if possible.
#
# OPTIONS:
# -i :: remove files using rm -i
if [ "$1" = -i ] ; then
INTERACT=$1
shift
fi
TODO=()
while read -r f ; do
TODO+=("$f")
done < <(hg st -an "[email protected]")
function go {
hg -v revert "[email protected]"
for f in "${TODO[@]}" ; do
rm $INTERACT "$f"
hg -q files "$f" > /dev/null && hg revert "$f"
done
}
go
ありがとうございました!古いファイルの削除を元に戻したとは思わなかった。 –
最後の 'ls'が示すように、" b "という名前のファイルがまだ存在するので、元の質問は完全には答えられていません。ここに示す手法を使用すると、ファイル "b"を手動で削除する必要があります。もちろん、与えられたシナリオでは、元の 'mv a b'がbを覆っていたら、それはなくなっています。なぜなら、代わりに 'hg mv'を使う理由があります。 – peak