Eclipse の svn を使用して不正な変更をロールバックする
-
09-06-2019 - |
質問
Subversion リポジトリに不適切な変更をコミットしたとします。それから、残しておきたい良い変更をコミットします。
Eclipse での悪い変更をロールバックし、良い変更を保持する最も簡単な方法は何でしょうか?悪い変更に関連するファイルは、良い変更に関連するファイルと同じではないと仮定します。悪い変更と同じファイルに良い変更が加えられた場合、状況はどのように変化しますか?
私は主にEclipseプラグイン(SubclipseまたはSubversive)を介してこれを行う方法を探していますが、コマンドラインコマンドも興味深いです。
解決
これを行うには 2 つの選択肢があります。
クイック アンド ダーティは (使用して) ファイルを選択しています。 Ctrl) プロジェクト エクスプローラー ビューでそれらを右クリックし、選択します Replace with...
次に、次から最適なオプションを選択します。 Latest from Repository
, 、またはいくつか Branch
バージョン。これらのファイルを取得した後、それらを変更し (スペースを使用するか、何かを修正して)、呼び出してコミットし、新しいリビジョンを作成します。
よりクリーンな方法は、 Merge
チーム メニューで、実際のリビジョンで古いバージョンを回復するのに役立つウィザードをナビゲートします。
どちらのコマンドにも、同等のコマンドラインがあります。 svn revert
そして svn merge
.
他のヒント
Eclipse ガニメデ (サブクリプス)
不正な変更を含むプロジェクト/ファイルを選択し、ポップアップ メニューから次を選択します。
チーム -> 履歴を表示
そのプロジェクト/ファイルに関連するリビジョンが「履歴」タブに表示されます。
「不正な変更」がコミットされたリビジョンを検索し、ポップアップ メニューから次を選択します。
リビジョン X からの変更を元に戻す
これにより、不正なリビジョン内で変更されたファイルの変更が、不正なリビジョンより前のリビジョンとマージされます。
ここからは 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 リポジトリのリビジョン履歴からリビジョンが削除されるわけではないことに注意してください。不正なリビジョンからの変更が削除された新しいリビジョンを作成しただけです。
一度に 1 ファイルを実行したい場合は、Eclipse SVN プラグインがインストールされていると仮定して、ファイルの履歴ビューに移動できます。「チーム -> 履歴を表示」
[履歴] ビューで、そのファイルの最新の正常なバージョンを見つけて右クリックし、[コンテンツの取得] を選択します。これにより、現在のバージョンがそのバージョンの内容に置き換えられます。すべて修正したら、変更をコミットできます。
Eclipse で Subversive を使用する場合:
プロジェクトを右クリック > [チーム] > [マージ]
マージウィンドウで、通常どおり元に戻したいリビジョンを選択しますが、「逆マージ」チェックボックスも有効にします。
通常どおりマージします。
私はこのテーマに関していくつかのブログ投稿を書きました。Subclipse 中心のもの: http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html もう 1 つはコマンドライン中心です。 http://blogs.collab.net/subversion/2007/07/second-chances/
svnbook には、Subversion を使用して、後続のリビジョンで発生した変更に影響を与えることなく、特定のリビジョンからの変更を元に戻す方法に関するセクションがあります。
http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo
私は Eclipse をあまり使用しませんが、TortoiseSVN ではログダイアログからこれを行うことができます。元に戻したいリビジョンを右クリックし、「このリビジョンからの変更を元に戻す」を選択するだけです。
「悪い変更」を元に戻したいファイルにその後のリビジョンで「良い変更」が含まれていた場合も、プロセスは同じです。「悪い」リビジョンからの変更は元に戻され、「良い」リビジョンからの変更はそのまま残りますが、競合が発生する可能性があります。
私も同じ問題を抱えていますが、CleanUp Eclipse オプションが機能しません。
1) TortoiseSVN をインストールする
2) Windows エクスプローラーに移動し、プロジェクト ディレクトリを右クリックします。
3 クリーンアップ オプションの選択 (ブレーク ロック オプションをチェックすることによる)
作品だよ。
これが誰かの役に立てば幸いです。