(追記)
下記の問題はhusky v4.0.7で修正された様子。
Node.jsで開発中のリポジトリで、気付いたらgit pushができなくなっていた。
$ git push origin master
stdin is not a tty
error: failed to push some refs to 'https://github.com/xxxxx/xxxxx.git'
gitのバージョンは以下の通り。
$ git --version
git version 2.24.1.windows.2
- エラーが起きたrepoで
commitやpull→できる - エラーが起きたrepoをgithubの新規リモートrepoに
push→できない - エラーが起きたrepoをbitbucketの新規リモートrepoに
push→できない - 空のrepoを新規作成してgithubの新規リモートrepoに
push→できる - 空のrepoを新規作成し、エラーが起きたrepoの
.gitフォルダ以外をすべてコピーしてpush→できる
以上の現象から.gitフォルダ内の破損かと思ったが、エラーになるのがpushだけというのが気になる。また、エラーメッセージもなんかスクリプトっぽい。そういえば、プロジェクトにhuskyを追加していたことを思い出す。
"husky": "^4.0.6"
.git/hooksを確認し、huskyによって追加されたpre-pushスクリプトをpre-push.bakにリネームして無効化してみると、pushできるようになった。
huskyのreleaseページを確認すると、つい最近に破壊的変更を含むメジャーバージョンアップが行われたらしく、そこから毎日のようにバグ修正版がリリースされている(執筆時点)。まだあまり安定していないのかもしれない。
検索したら同じ問題のissueもすでにあったので、そのうち直ると思われる。
[4.0.0 | Git Bash | Windows 10] stdin is not a tty
自分はpre-pushhookを使っていないし、とりあえず今は無効化しておくことにした。
pre-pushを使いたい場合はhuskyのバージョンを3.1.0系に下げればいいらしい。