Visual Studio CodeとGitの連携時の引っかかったところ
とりま殴り書き.全部説明するというよりうまく行かなかったところだけピンポイントに書いてる.
目標:あらかじめGithubに作ったリポジトリに,vscodeで編集したファイルをGUI環境で(git pushなんたらとかタイプせずにvscode内のボタンクリックで)公開鍵認証(HTTPSではなくSSH)で同期できるようにする.
前提:ターミナル等で”git push”と実行したら自分のリモートリポジトリに公開鍵認証でファイルを同期できる.ターミナルで「ssh -T [email protected]」が正常に通る状態である.
OSはMacのMojave.
Macでgitコマンドが使えなくなった場合は下のリンクを参考に
https://qiita.com/ARTS_papa/items/60ba305b23dc967bba87
最終的な動作:
1:GIthubをブラウザで開きリポジトリを作成する
2:そのリポジトリをCloneしてくる
3:Cloneしてきたリポジトリをvscodeで開く(要するに作業場所の設定)
4:ファイルを編集・追加する
5:ソースツリータブに編集・追加されたファイルの一覧が出るので上部にあるチェックマーク(マウスをオーバーレイするとCommitとなるアイコン)を押す.
6:チェックマーク横の「・・・」アイコンをクリックしPushを押すと指定したリモートリポジトリにファイルが同期される.
7:4へ戻る
詰まったところ
Q1:動作の5の場面.vscodeのソースツリータブにおいて「有効なソース管理プロパイダーがありません」と表示され動かない
A1:拡張機能ビューを開きボックス内に”@builtin git”と入力.有効になっていたものの一度無効にして再度有効にした.
Q2:エラーではないようだが動作5においてCommitを行おうとすると「there are no staged changes to commit」と注意ダイアログがでる.
A2:どうやらstageは”git add”のことを指す模様.要するにaddしてないけどいきなりCommitしてええんか?ってことみたい.きちんとファイル単位でaddとcommitをしたい場合は問題あるかもしれないがそこまでやってないので問題ないと判断.
ダイアログにて「常にそうする」を選んでから気づいたが「・・・」タブの中にはcommit stagedという動作があった.もしかしたらこれがaddに対応しておりこれをしてからcommitするといいのかもしれない(要調査)
Q3:動作6にてPushを行おうとすると,「Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 」とエラーがでてPushできない.
A3:いくつかポイントがある模様.
その1:鍵と鍵の置き場所のパーミッション→.sshフォルダは700で鍵本体は600
その2:Githubに登録する公開鍵の内容→最後のメールアドレスは消した方が良い可能性
その3:.sshフォルダ内のconfigファイルへの記述.鍵が複数ある場合にはどの鍵を使うか指定しなければならないのかもしれない.どうやら「id_rsa」という名前になっている鍵を優先的に使うようなのでそのあたりも関係あるかも.あまり自分には関係なさそうだったので,このあたりは早めに切り上げて深く調べてない.
その4:ssh-agentの使用.これがポイントだった.前提でも書いた通り,ssh認証はきちんと通っており鍵ペアは問題なさそうなのにvscodeからは秘密鍵に触れないという感じになっていた.
https://qiita.com/naoki_mochizuki/items/93ee2643a4c6ab0a20f5
を参考にssh-agentに鍵を登録してみるとエラーを吐かれることなくpushできました.agentが適宜vscodeに秘密鍵を使わせてあげることができるようになったんちゃうかなって考えてる.














