Eclipseのsvnで悪い変更をロールバックする


81

Subversionリポジトリにいくつかの悪い変更を加えたとしましょう。それから私は私が維持したい良い変更をコミットします。

Eclipseでこれらの悪い変更をロールバックし、良い変更を保持する最も簡単な方法は何でしょうか?悪い変更に関連するファイルが良い変更に関連するファイルと同じではないと仮定します。悪い変更と同じファイルに良い変更が加えられた場合、状況はどのように変化しますか?

私は主にEclipseプラグイン(SubclipseまたはSubversive)を介してこれを行う方法を探していますが、コマンドラインコマンドも興味深いものです。

回答:


30

これを行うには2つの選択肢があります。

Quick and Dirtyはctrl、プロジェクトエクスプローラービューで(を使用して)ファイルを選択し、それらを右クリックしReplace with...て選択し、からLatest from Repository、またはいくつかのBranchバージョンから最適なオプションを選択します。それらのファイルを取得した後、それらを変更します(スペースを使用するか、何かを修正します。呼び出してコミットし、新しいリビジョンを作成します。

よりクリーンな方法はMerge、チームメニューで選択し、実際のリビジョンで古いバージョンを回復するのに役立つウィザードをナビゲートすることです。

どちらのコマンドにも、同等のコマンドラインがsvn revertありsvn mergeます:および。


1
リポジトリからの最新のものは間違ってチェックインされたものなので、どこで役立つかわかりません。これに加えて、複数のファイルを選択した場合に使用できるのはメンションオプションのみであるため(おそらく最新バージョンが異なるため)、Eclipseはこの問題の解決に役立ちません。
マシリアス2015

79

Eclipse Ganymede(サブクリップ)

悪い変更を含むプロジェクト/ファイルを選択し、ポップアップメニューから以下を選択します。

チーム->履歴を表示

そのプロジェクト/ファイルに関連するリビジョンは、[履歴]タブに表示されます。

「悪い変更」がコミットされたリビジョンを見つけ、ポップアップメニューから次を選択します。

リビジョンXからの変更を元に戻す

これにより、不正なリビジョン内で変更されたファイルの変更が、不正なリビジョンの前のリビジョンとマージされます。

ここから2つのシナリオがあります。

  1. そのファイルに変更を加えていない場合(不正なリビジョンはそのファイルの最後のリビジョンです)、不正なリビジョンで行われた変更は削除されます。これらの変更は作業コピーにマージされるため、コミットする必要があります。

  2. そのファイルにいくつかの変更をコミットした場合(不正なリビジョンはそのファイルの最後のリビジョンではありません)、競合を手動で解決する必要があります。ファイルreadme.txtがあり、リビジョン番号が33であるとします。また、リビジョン34でそのファイルに対して別のコミットを行いました。リビジョン33から変更を元に戻すを選択すると、作業コピーに次のようになります。

readme.txt.merge-left.r33- 悪いリビジョン

readme.txt.merge-right.r32- 不正なリビジョンの前

readme.txt.working- 作業コピーバージョン(コミットされていない変更がない場合はr34と同じ)

元のreadme.txtには競合のマークが付けられ、いくつかのマーカー(<<<<<<< .workingなど)を含むマージされたバージョン(不正なリビジョンからの変更が削除されます)が含まれます。悪いリビジョンから変更を削除し、その後の変更を保持したいだけの場合は、マーカーを削除するだけです。それ以外の場合は、上記の3つのファイルのいずれかから元のファイルにコンテンツをコピーできます。何を選択しても、完了したら、競合を解決済みとしてマークします。

チーム-マークが解決しました

一時ファイルは削除され、ファイルは変更済みとしてマークされます。1と同様に、変更をコミットする必要があります。

これはsvnリポジトリのリビジョン履歴からリビジョンを削除しないことに注意してください。悪いリビジョンからの変更が削除された新しいリビジョンを作成しただけです。


14

一度に1つのファイルを実行する場合は、Eclipse SVNプラグインがインストールされていると仮定して、ファイルの履歴ビューに移動できます。「チーム->履歴を表示」

履歴ビューで、そのファイルの最後の適切なバージョンを見つけ、右クリックして[コンテンツの取得]を選択します。これにより、現在のバージョンがそのバージョンのコンテンツに置き換えられます。その後、すべて修正したら、変更をコミットできます。


6

Subversiveを使用するEclipseの場合:

プロジェクトを右クリック>チーム>マージ

マージウィンドウで、通常どおりに元に戻すリビジョンを選択しますが、[逆マージ]チェックボックスも有効にします。

通常どおりにマージします。



1

svnbookには、Subversionを使用して、後続のリビジョンで発生した変更に影響を与えることなく、特定のリビジョンからの変更を元に戻す方法に関するセクションがあります。

http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo

私はEclipseをあまり使用していませんが、TortoiseSVNではログダイアログからこれを行うことができます。戻すリビジョンを右クリックして、[このリビジョンからの変更を元に戻す]を選択するだけです。

「悪い変更」を元に戻したいファイルがその後のリビジョンで「良い変更」を持っていた場合、プロセスは同じです。「悪い」リビジョンからの変更は元に戻され、「良い」リビジョンからの変更は変更されませんが、競合が発生する可能性があります。


0

同じ問題がありますが、CleanUpEclipseオプションが機能しません。

1)TortoiseSVNをインストール
します。2)Windowsエクスプローラーに移動し、プロジェクトディレクトリを右クリックします。
。3クリーンアップ]オプションを選択します(ブレークロックオプションをオンにします)。

それはうまくいきます。

これが誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.