82

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

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

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

4

7 に答える 7

80

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リポジトリのリビジョン履歴からリビジョンを削除しないことに注意してください。悪いリビジョンからの変更が削除される新しいリビジョンを作成しただけです。

于 2008-09-15T14:06:08.187 に答える
30

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

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

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

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

于 2008-08-30T15:54:19.717 に答える
14

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

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

于 2008-09-22T19:37:36.947 に答える
6

Subversive を使用する Eclipse の場合:

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

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

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

于 2010-11-05T12:59:07.597 に答える
5

この件に関して、いくつかのブログ記事を書きました。Subclipse 中心のもの: http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.htmlおよびコマンドライン中心のもの: http://blogs.collab. net/subversion/2007/07/second-chances/

于 2008-09-15T13:29:19.413 に答える
1

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

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

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

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

于 2008-08-30T20:30:50.847 に答える
0

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

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

それは動作します。

これが誰かに役立つことを願っています。

于 2016-10-24T09:15:47.233 に答える