(追記)
下記の問題は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-push
hookを使っていないし、とりあえず今は無効化しておくことにした。
pre-push
を使いたい場合はhusky
のバージョンを3.1.0
系に下げればいいらしい。