2013-10-08 75 views
10

自分の作業ディレクトリでファイルを修正して、svnアップデートを実行しました。更新は矛盾なく実行されました。svnの更新を元に戻す方法は?

私は、作業ディレクトリの内容をsvnアップデートの直前の状態に戻すことができます。

私はローカルのgitリポジトリを共有svnリポジトリと並行して維持しているからです。私はsvnの更新を行う前に私のローカル変更をコミットするgitを忘れていた。今私の作業ディレクトリには、ローカルの変更がsvnの更新に起因する変更と混在しています。私がコミットすると、すべての変更は1つのアトミックな変更として表示されます。私は彼らが別々になることを望んだ。私がアップデートを元に戻し、私がsvnアップデートの前に持っていた作業ディレクトリの内容を保存できるなら、私はそれを行うことができます。

+0

私は別の方法でそれを解決に利用できるファイルとリビジョンのファイルのコピーが存在します。ローカルの変更は、更新プログラムの影響を受けないファイルにありました。だからgitステージのメカニズムのおかげで、私は、ローカルで変更されたファイルをコミットし、2回目のコミットでは、svnの更新によって変更された他のすべてのファイルが変更されました。私は運が良かった。 – chmike

+0

はい、gitステージが脱出です。ファイルに影響があったとしても、 'svn diff'と' git apply'を使ってSubversionの変更や変更を取り除くことができます。 –

+1

どちらの場合でも、将来は 'git-svn'を使うことをお勧めします。リビジョンのインポートとエクスポートを確実に処理できるほか、ローカルパッチキューとして使用することもできます(ローカルブランチで複数のコミットを行い、インタラクティブなリベースを使用してそれらの一部のみをサブバージョンにプッシュできます)。 –

答えて

4

これはできません。更新前の状態は忘れています。

git applyを使用してインデックスに適用し、変更をコミットし、すべてをコミットする(プルからの変更)ことで、変更を分けることができます。

これは緊急の解決策です。私はgit-svnに切り替えることをお勧めします。これは将来このようなことを処理します。

2

を実行して、ローカルファイルを安定版に変更してから再コミットします。このようにして、すべてのローカル変更を失います。

+4

ローカルのすべての変更を失うことは、私が避けたいものです。 – chmike

+0

明らかにあなたの場合、ローカルで変更されたファイルが競合していない場合、この操作は役に立たない。だから、あなたは幸運です! ;)良い一日を持っています –

0

これはLinuxユーザー向けです。

次のような改訂を想定します。

ヘッド - 18、17、15、14、10、9,8 - ヘッド20の 以前のリビジョン。

srcディレクトリに移動します。 使用する svn merge -r 17:18 $ url

$あなたのsvnベース用のURLです。

6

私はこの質問にぶつかり続けます。実際には、「svnの更新を元に戻す方法」の簡単な答えは含まれていません。質問。

だから、他人の利益のために、あなただけのバックアップデートをロールしたい解ける場合と:

ファーストでログを確認してください。

svn log | less 

これは(あなたのリビジョン番号を与えます例:957)に戻ります。その後:があった場合場合は、任意の競合が更新時に発生した

svn up -r 957 
+4

この回答は、変更された作業ディレクトリの大文字と小文字を無視します。 –

+0

true @RobertPollakしかし、それは質問のタイトルによって提起された質問に答える... – ErichBSchulz

+0

これは、元の質問に答えることができないので、下書きします(最初の文には変更されたファイルに関する注記が含まれています)。これは、別の質問「特定のリビジョンに更新する方法」への回答になります。修正されたファイルがあり、そのファイルについての言及がない場合、この回答は機能しません。 –

関連する問題