リモートリポジトリを BitBucket にしていると、SourceTreeが頻繁に認証画面を出してきて非常に鬱陶しい。

何も入れずに閉じてもPull / Pushはできている。
どうやら、バックグラウンドでFetchした時に認証を求めてくるようだ。SourceTreeは一定時間ごとに裏でFetchをしてリモートの情報を取ってきている。
環境は以下の通り、
- Windows10
- SourceTree 2.6.10.0
- Git 2.18.0
特にGitHubとBitBucketの両方のリモートリポジトリをSourceTreeで扱っていると起きやすい気がする。
問題ありそうな箇所
- Windowsの認証管理情報
- SourceTreeでのアカウント設定
ほぼ、2.のSourceTree / Gitが保持しているログイン情報を設定、修正すればいいと思う。
ただ、Windowsの認証管理で問題が出ていても、Windowsの方からは何らエラーが出ないので厄介である。なので、これも対処に含めた。
結論だけ言うと、自分の場合はSourceTreeのアカウント設定で「デフォルトに設定」をするだけでよかった模様。
Windowsの認証情報を一旦削除
間違った認証情報がWindowsに登録されてしまうと、
- Windowsがアプリケーションに代わってログインしようとする
- サーバ側は認証失敗を返す
- アプリケーション側で認証画面が出る
- ログインし直す
- Windows側のログイン情報は更新されない
- 最初に戻る
という、無限ループにはまってしまう場合があるようだ。
認証に成功したらその時の情報が入りそうなものだが、更新に失敗する場合があるのだろうか?
Windowsの設定にある「資格情報マネージャー」から、BitBucket関係の認証情報を一旦削除してしまう。

「設定」画面から「資格情報」で検索すると早い。
あるいはコントロールパネルから入る。
「Windows 資格情報」の方に、
git:https://akiya64@bitbucket.org
とあるので、今回はこれである。他にあればBitBucketに関係する資格情報は一旦、全て削除する。
認証に失敗した場合でも、認証情報は追記されているため問題の切り分けが面倒になっている。
修正もできるので、正しく設定し直してやればいいのかもしれない。


SourceTreeでのアカウント設定
SourceTreeにはコードホスティングサービスのアカウント情報が登録できる。
メニューバーの ツール → オプション → 認証を開く。

アカウントにBitBucketがないので追加する。
「Git保存されたパスワード」とは別の扱いである。

認証方法は BasicかOAuthが選べる。Basicの場合は、ここでユーザー名を入力してパスワードで認証する。
OAuthなら「OAuthトークンを再読み込み」で下記のようにBitBucketのWebサイトが開くので、連携アプリケーションのアクセスを許可してやればよい。



ついで、ユーザー名のデフォルト設定をしておく。
これをしていないと、所有者が自分でないBitBucketのリモートにアクセスするとログインエラーになるようだ。

実は私の場合、ここのユーザー名の設定一発で認証画面が頻繁に表示される問題は解消した。
アカウント設定をやっておこう
何となくPull/Pushできるものだから、そのまま使ってきていたが、SourceTreeにアカウント情報を登録できるのだからやっておくべきだった。
OAuthで認証できるなら、こっちの方が断然、楽で確実である。