はじめに
Visual Studio CodeでGitHubにpushした時に、下記のエラーが発生した。
git push -u origin master
fatal: cannot run /private/var/folders/35/363l43cj7sl60j9xw34_rbdw0000gn/T/AppTranslocation/DF6474BE-4462-425E-BADD-011ACAF41F89/d/Visual Studio Code.app/Contents/Resources/app/extensions/git/dist/askpass.sh: No such file or directory
これを解決するために色々行なったことを以下に記していく。
途中、ssh-agentなど今回の問題とは関係のないものも出てくるが、ついでに書き留めておく。
SSH確認とSSH追加方法を公式で確認する。
まず、下記のリンクからGitHubのSSHキーが使用中のOSに登録しているか確認し、登録していないのであれば、登録方法を確認する。
GitHub SSH確認、SSH追加方法
SSHキーの確認
ls -al ~/.ss
下記のようなものがあれば設定済みだ。
id_rsa.pub
id_ecdsa.pub
id_ed25519.pub
今回そういったものは表示されなかったため、追加していく。
SSHキーの追加
$ ssh-keygen -t ed25519 -C "<GitHubに登録しているメールアドレス>"
Generating public/private ed25519 key pair.
Enter file in which to save the key(<キーが保存されるディレクトリ>): # ここでエンターを押す
Enter passphrase (empty for no passphrase): # パスワードを入力
Enter same passphrase again: # パスワードを再度入力
これで完了した。
もう一度確認してみる。
$ ls -al ~/.ssh
-rw------- 1 <username> <groupname> 464 7 17 16:34 id_ed25519
-rw-r--r-- 1 <username> <groupname> 100 7 17 16:34 id_ed25519.pub
上記のファイルが作成されたことを確認した。
ssh-agentに鍵を追加する
パスワード入力を省略するため
$ eval "$(ssh-agent -s)"
Agent pid 7138
# configファイルがある場合はtouchする必要なし
$ touch ~/.ssh/config
$ open ~/.ssh/config
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519.pub
SSH 秘密鍵を ssh-agent に追加して、パスフレーズをキーチェーンに保存する。
ssh-add -K ~/.ssh/id_ed25519
publicキーをGitHubに登録する
SSH keysの『New SSH Key』からPublicキー(id_ed25519.pubの中身)を登録する。
vscodeとgithubを連携させる
もしかしたら、これを最初からやっていればできていた?
上記を参考に連携した。
shift+command+Pで開いたところに『gitaddremote』と打ち、出てきたものを選択する。VScodeのversionが古い場合はインストールし直して、アプリを開き直す。
これで連携が完了し、再度push してみる。
$ git push
Enumerating objects: 530, done.
Counting objects: 100% (530/530), done.
Delta compression using up to 4 threads
Compressing objects: 100% (468/468), done.
Writing objects: 100% (477/477), 55.76 KiB | 2.66 MiB/s, done.
Total 477 (delta 364), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (364/364), completed with 40 local objects.
To https://github.com/<username>/<repository>.git
423a5ed..9a69dce master -> master
これでpushできた。
実際にgithubに行ってデータが反映されているか確認し、問題なく反映されていた。
用語説明
SSHキーとは
公開鍵暗号方式と共通鍵暗号方式を組み合わせたもので、httpsから始まるウェブサイトは、SSLが適用されている。
ls -alとは
『ls -a』によって、カレントディレクトリの下にぶら下がっているファイルやフォルダを全て表示する。
『ls -l』によって、左から
アクセス権、リンク数、所有者名、グループ名、サイズ、最終更新日時、名前の詳細
の順に表示する。
上記を組み合わせたコマンドである。
参考