web-dev-qa-db-ja.com

SVNから更新するときに、ローカルの変更を常に(強制)上書きすることは可能ですか?競合を無視しますか?

私は自分のブランチで作業する必要があることを知っていますが、2、3人はプロジェクトの同じブランチで作業しています。開発者の1人がコミットし、ローカルコピーをSVNの最新のもので更新したかっただけです。 「svn update」を実行すると、次の出力が得られます。

Restored 'index.html'
U    somescript.php
Conflict discovered in file.xml'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options: 

ローカルの変更を上書きしてSubversionから最新のファイルを取得し、すべての競合を無視するオプション/方法はありますか?

Stackの他の投稿をいくつか見てきましたが、すべての質問に答えていません。彼らはプロジェクトを削除してもう一度チェックアウトするように言っていますが、それが最善の方法だと思うのですが...ありがとう

編集:

そこで、「すべてのオプションを表示」を選択しました。

(s)すべてのオプションを表示:s

  (e)  edit             - change merged file in an editor
  (df) diff-full        - show all changes made to merged file
  (r)  resolved         - accept merged version of file

  (dc) display-conflict - show all conflicts (ignoring merged version)
  (mc) mine-conflict    - accept my version for all conflicts (same)
  (tc) theirs-conflict  - accept their version for all conflicts (same)

  (mf) mine-full        - accept my version of entire file (even non-conflicts)
  (tf) theirs-full      - accept their version of entire file (same)

  (p)  postpone         - mark the conflict to be resolved later
  (l)  launch           - launch external tool to resolve conflict
  (s)  show all         - show this list

オプション 'tc'を使用する必要がありますか?

60
Phill Pafford

HEAD(リポジトリの最新リビジョン)のコピーが本当に必要な場合は、

svn revert -R <path> // discard all your changes inside path (recursive)
svn update           // get latest revision of all files (recursive)

それでおしまい。

最後の「コミット」以降のすべての変更が失われることに注意してください。

EDIT:-R <path> from Isu_guy answer 完全を期し、読者が単一の完全な答えを見つけられるようにするため

74
tato

tatoの答えは絶対に正しいので、注意してください。すべての変更が失われます。構文といくつかのニュアンスの明確化

svn revertはデフォルトでは非再帰的であり、作業するためのパスが必要です。再帰的にするには、「-R」を追加します。現在のディレクトリにいる場合は、以下の「パス」に「./」を使用するか、「/ path_to_your_folder」のような絶対パスを使用します

svn revert -R <path>

svn updateは再帰的です。ディレクトリにいる場合、パスはまったく必要ありません

svn update
28
lsu_guy

私はこれをします:

svn up --accept tf

または

svn up --accept theirs-full

とは言っても、作業コピーのルートで「svn revert -R」を選択してから「svn up」を実行することもトリックです。私の場合、さまざまなプロジェクトにいくつかのWCがあります。そのため、コンピューターの起動時にすべてのWCを更新するシェルスクリプトを実行します。私はacceptを使用せず、むしろ自動プロセスであるため、「-accept p」を使用して解決を延期し、SVNが自動的にマージできない競合をマージします(通常、これには元に戻す必要がありますが、 )。

27
Carnix

Svn 1.6.11(CentOS 6.4に付属)を使用すると、Carnixのコマンドは次のようになります。

svn up --accept theirs-full

(評判が足りないのでコメントを追加してください)

16
Andrei Nistor

最初の質問に答えます。 いいえ。ただし、プロジェクトのルートから次のコマンドを実行することにより、ローカルファイルをオーバーライドできます。

svn revert -R .
svn update

これは、svn 1.7.19のMacおよびsvn 1.8.8のubuntuで動作しました

2