😇

VSCodeでgit pushできない(部分的に解決)

2022/01/31に公開

エラー内容

こんな風に怒られました。
エラーメッセージ

あらすじ

※過去に書いた記事に関係する話です。こちらも合わせてどうぞ。
https://zenn.dev/keikuchen/articles/cffa31d69ecaae7e91d7
以下の話は、上記の設定が行われている環境での話であることをご承知おきください。


VSCodeはgit操作をGUIで行う機能が付いていて、gitコマンド覚えてないよ〜💦という私のようなよわよわエンジニアにも大変やさしい素晴らしいツールです。
そのため私はgit pushしたい時はいつもGUIで行い、さもgitを完全に理解しているかのようなドヤ顔で仕事をしていました。
VSCodeのGUI
みんなだいすきVSCode

そんなある日、普段とは違うリポジトリに対してgit pushしたい時が訪れて、何の気なしにGUIから操作したところ、冒頭のエラーが発生しました。

解決

今までVSCodeのGUIでgit pushができた理由

そもそもgitの接続方法(SSH or HTTPS)は、【プロジェクトルートディレクトリ】/.git/configに記載されている値によって決まるようです。

[remote "origin"]
	url = github:【ユーザ名】/【リポジトリ名】.git  # この場合はSSH
	url = https://github.com/【ユーザ名】/【リポジトリ名】.git  # この場合はHTTPS
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
	remote = origin
	merge = refs/heads/main

この値は、最初にgit cloneした時に指定した値が入ります。

後から値を変更したい時は以下コマンドを使用します。

$ git remote set-url origin https://github.com/【ユーザ名】/【リポジトリ名】.git
$ # または
$ git remote set-url origin github:【ユーザ名】/【リポジトリ名】.git

私が日々GUIでgit pushしていたリポジトリはHTTPSでcloneしたリポジトリだったため、当然その後の通信は全てHTTPSになっていた(=鍵ペアを使わないので冒頭のようなエラーは起きない)、ということでした。

じゃあSSH接続でVSCodeのGUIからgit pushする方法は?

まだわかりません😇

とりあえず、VSCode上などのターミナルからgit pushコマンドを使えば、.ssh/configで定義した値を使用してくれて問題なくpushできるので、素直にそうするのが良いと思います😇

おわりに

  • 最初のgit cloneのやり方でその後の接続方法が決まるとは思わなんだ
  • 素直にコマンドを覚えて叩こう
  • こうやって少しずつ「git完全に理解した」から「gitチョットデキル」に成長していくんだろうなぁ
  • それはそうとVSCodeのGUIからSSHでgit pushする方法は知りたい!ので分かる方がいらっしゃったらコメントをお待ちしております(もし自己解決したら追記します)

Discussion