今まで使ってなかったconfig/deploy/staging.rbを編集して、$ cap staging deployしたら、

cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as user@example.com: git exit status: 128
git stdout: Nothing written
git stderr: fatal: destination path '/path/to/releases/20150407233334' already exists and is not an empty
 directory.

となって失敗。
よく見ると全部のコマンドが2回ずつ実行されてた。

設定を再確認すると、

role :app, %w{user@example.com}
role :web, %w{user@example.com}
role :db,  %w{user@example.com}

server 'example.com', user: 'user', roles: %w{web app db}

の両方が書かれてしまっていた。
roleの方をコメントアウトしたらいけた。