web-dev-qa-db-ja.com

アイテムをリビジョンに更新vsリビジョンに戻す

TortoiseSVNでSubversionを使い始めました。ログを開いて古いリビジョンを右クリックすると、「アイテムをリビジョンに更新」と「このリビジョンに戻す」という古いバージョンにロールバックするように聞こえる2つのオプションが表示されます。

古いバージョンに戻って、実際にはリポジトリを変更したくない場合に、古いリビジョンへの更新が使用されることを理解しています。復帰とは、実際に台無しにして、リポジトリ内の最新のリビジョンを古いバージョンと同じにすることです。

HEADリビジョンは100で、95に戻すと言います。作業コピーを95に逆マージします。その後、リビジョン101を正しく作成する変更をリポジトリにコミットできますか?リビジョン95に更新する場合、どう違いますか?前回のリビジョンからの変更をまだ元に戻していませんか?古いリビジョンに復帰または更新した後、作業コピーの状態がどのように異なるかについて私は混乱しています。

160
Eric Anastas

リビジョンに更新は、作業コピーのファイルのみを選択したリビジョンに更新します。ただし、SVNは作業コピーが期限切れであると文句を言うので、続行できませんこのリビジョンで作業します。

このリビジョンに戻すは、選択したリビジョン(例ではrev。96,97,98,99,100)の後に行われた作業コピーのすべての変更を元に戻します。作業コピーは現在変更された状態

両方のシナリオのファイルの内容は同じですが、最初のケースでは、未変更の作業コピーがあり、変更をコミットできません(workingcopyがポイントしていないため) HEAD rev 100へ)2番目のケースでは、modified作業コピーを頭に向けており、作業とコミットを続けることができます

202
Peter Parker

両方のシナリオで作業コピーの状態がどのように異なるかを理解するには、 BASEリビジョン の概念を理解する必要があります。

ベース

作業コピー内のアイテムのリビジョン番号。アイテムがローカルで変更されている場合、これは、それらのローカル変更なしでアイテムが表示される方法を指します。

作業コピーには、このBASEリビジョンの各ファイル(.svnフォルダーに隠されている)のスナップショットが含まれています。これは、リポジトリから最後に取得したときと同じようにを意味します。これは、作業コピーが2倍のスペースを必要とする理由と、ネットワーク接続なしでローカルの変更を調べて元に戻すことができる方法を説明しています。

Revisionにアイテムを更新すると、このベースリビジョンが変更され、BASEが最新ではなくなります。ローカルの変更をコミットしようとすると、SVNは、BASEがリポジトリのHEADと一致しないことに気付きます。これを修正するために更新(および場合によってはマージ)を行うまで、コミットは拒否されます。

リビジョンに戻すはBASEを変更しません。概念的には、以前のリビジョンと一致するようにファイルを手動で編集するのとほぼ同じです。

31
Wim Coenen

作業コピーのファイルはlook後とまったく同じかもしれませんが、それらはまだ非常に異なるアクションです-リポジトリは完全に異なる状態にあり、元に戻すと異なるオプションが利用可能になります古いリビジョンへの「更新」。

簡単に言うと、「更新」は作業コピーにのみ影響しますが、「逆マージとコミット」はリポジトリに影響します。

古いリビジョンに「更新」する場合、リポジトリは変更されていません。この例では、HEADリビジョンはまだ100です。単にいじっているので、何もコミットする必要はありません。作業コピー。作業コピーを変更してコミットしようとすると、作業コピーが古くなっていることが通知され、コミットする前に更新する必要があります。同じリポジトリで作業している誰かが「更新」を実行する場合、または2つ目の作業コピーをチェックアウトする場合、r100になります。

ただし、古いリビジョンに「リバースマージ」すると、作業コピーは依然としてHEAD(最新の場合)に基づいていますが、新しいリビジョンを作成して置き換えます不要な変更。リポジトリを変更しているため、これらの変更をコミットする必要があります。完了すると、HEADに基づく更新または新しい作業コピーには、コミットした内容を含むr101が表示されます。

5
Zac Thompson

作業コピーを選択したリビジョンに更新します。作業コピーに過去の時間を反映させたい場合、またはリポジトリへのさらなるコミットがあり、作業コピーを1ステップずつ更新したい場合に役立ちます。 1つのファイルだけでなく、作業コピーのディレクトリ全体を更新することをお勧めします。そうしないと、作業コピーに一貫性がなくなる可能性があります。 これは特定の回転の目的をテストするために使用されます。テストが完了したら、このコマンドを使用して別の回転をテストするか、SVN Updateを使用してHEAD

以前の変更を完全に元に戻す場合は、代わりにこのリビジョンに戻すを使用します。

-TSVNヘルプドキュメントから

作業コピーを以前のリビジョンに更新する場合、これは自分の作業コピーにのみ影響します。変更を加えてコミットしたい場合、失敗します。TSVNは、最初にWCを最新リビジョンに更新するよう警告します。 revにすると、repository.commitにコミットできます。誰もが更新を行うと、revに戻ります。

4
prime23

Tortoiseリファレンスのテキスト:

アイテムをリビジョンに更新作業コピーを選択したリビジョンに更新します。作業コピーに過去の時間を反映させたい場合、またはリポジトリへのさらなるコミットがあり、作業コピーを1ステップずつ更新したい場合に役立ちます。 1つのファイルだけでなく、作業コピーのディレクトリ全体を更新することをお勧めします。そうしないと、作業コピーに一貫性がなくなる可能性があります。

以前の変更を完全に元に戻す場合は、代わりにこのリビジョンに戻すを使用します。

このリビジョンに戻す以前のリビジョンに戻します。いくつかの変更を行った後、リビジョンNの状態に本当に戻りたいと判断した場合、これが必要なコマンドです。変更は作業コピーで元に戻されるため、変更をコミットするまでこの操作はリポジトリに影響しません。これにより、選択したリビジョンの後に行われたすべての変更が取り消され、ファイル/フォルダーが以前のバージョンに置き換えられることに注意してください。

作業コピーが変更されていない状態の場合、このアクションを実行すると、作業コピーは変更済みとして表示されます。すでにローカルの変更がある場合、このコマンドは元に戻す変更を作業コピーにマージします。

内部で行われているのは、Subversionが選択したリビジョンの後に行われたすべての変更の逆マージを実行し、それらの以前のコミットの効果を取り消すことです。

このアクションを実行した後、元に戻すを元に戻し、作業コピーを以前の変更されていない状態に戻すことにした場合、Windowsエクスプローラー内でTortoiseSVN→元に戻すを使用する必要があります。

以前のリビジョンでファイルまたはフォルダーがどのように見えたかを単に見たい場合は、代わりに「リビジョンに更新」または「リビジョンを名前を付けて保存...」を使用します。

2
Liker777

リビジョン構文への@BaltoStar更新:

http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.update.html

svn update -r30

30はリビジョン番号です。この助けを願っています!

1
Rishabh Agarwal