2

最近、いくつかのファイルに不要な変更を加えました。時間に基づいてそれらを元に戻すことは可能ですか(たとえば、過去10分間に行われたすべての変更を元に戻す)

4

1 に答える 1

3

オプション1:ロールバックまたはストリップ

不要な変更の一部をすでにコミットしている(プッシュしていない)場合は、簡単です。

$ hg strip <firts-unwanted-revision>

これには、mqstrip有効にする拡張機能

rollbackまたは、コマンドがケースに十分かどうかを確認します。

オプション2:選択したファイルのみを元に戻す

それ以外の場合は、ファイルを最後のコミットの状態にしか戻すことができません。Mercurial(Git、SVN、および他のほとんどのバージョン管理システムとして)は、コミットしたときにのみ変更を追跡します。その間のすべてはMercurialの制御の外にあります。そのため、一般的には早期に頻繁にコミットするのが最善です。

ただし、ファイルの変更時間を利用して、過去10分間に変更されたファイルのみを元に戻すことができます。これにより、ファイルごとのすべての変更が元に戻されることに注意してください。つまり、10分以上前にこれらのファイルに加えられた変更も元に戻されます。最後の変更が10分以上前に行われた、正しく編集されたファイルのみを保護します。

$ hg revert <files-touched-within-last-10-minutes>

findUnixシステムでは、次のコマンドを使用して、過去10分以内に変更されたすべてのファイルのリストを取得します。

$ find -mmin -10

オプション3:良い変更をコミットし、悪い変更を破棄する

最後に、悪い変更が良い変更を上書きしなかったが、それらの隣に存在する場合にうまく機能する3番目のオプションがあります。ここで良い戦略は

  1. ( recordまたはcrecordコマンドを使用して)適切な変更のみをコミットしてから、
  2. 残りのすべての変更を元に戻します(例hg up -r . -C:)

HG-Bookには、不要な変更に対処するためのヒントがあります。

于 2013-01-06T21:05:34.453 に答える