長期間アップデートをしていなかった SourceTree を気まぐれに更新したら SSH 経由で利用しているリポジトリでプル、プッシュが出来なくなった。
発生した環境
- Windows 10 Enterprise 22H2
- SourceTree 3.4.17
エラー内容
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch --tags origin
fatal: protocol error: bad line length character: XXXX
FATAL ERROR: Error reading from console: Error 109: �p�C�v�͏I�����܂����Bエラー終了しました。エラーの内容は上記をご覧ください。
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v --tags origin master:master
Pushing to ssh://XXXXX.git
fatal: protocol error: bad line length character: XXXX
FATAL ERROR: Error reading from console: Error 109: �p�C�v�͏I�����܂����Bエラー終了しました。エラーの内容は上記をご覧ください。
迫真の文字化け
原因
Sourcetree newer than 3.4.7 can't fetch/pull with a fatal protocol error: bad line length character
上記の Stack Overflow によると SourceTree にバンドルされている plink.exe の影響らしい。
解決策
Stack Overflow で記載してくれている手順と同じ。
https://www.sourcetreeapp.com/download-archives から Windows 用 SourceTree 3.4.7 をダウンロードする。
SourceTreeSetup-3.4.7.exe をダブルクリックする。
SourceTree が 3.4.7 にダウンデートされる。
C:\Users\ユーザー名\AppData\Local\SourceTree\app-3.4.7\tools\putty\plink.exe
を適当な場所へコピーして退避する。
SourceTree をアップデートする。
念の為、SourceTree を再起動して、バージョンが上がっていることを確認する。
退避しておいた 3.4.7 の plink.exe で C:\Users\ユーザー名\AppData\Local\SourceTree\app-3.4.17\tools\putty
内の plink.exe を上書きする。
プル、プッシュが正常に行えることを確認する。