GitHub_VSCode上でプルやプッシュをする #202日目
GitHubの操作で、リモートリポジトリの更新内容をローカルリポジトリに反映させる「プル」や、ローカルリポジトリでの作業内容をリモートリポジトリに反映させる「プッシュ」を、VSCodeのGUIで簡単に行えるように設定できます。
ただ、自分の環境では単純にgit cloneしただけでは上手くいかず、丸一日ハマっていたので対処法をメモしておきます。
環境
WSL2 Ubuntu 22.04 LTS (Windows10)
エディタ:VSCode
発生していた現象
VSCode上でプルの操作をしても永遠と同期処理が続いていて終わらない(エラーも出ない)
対処法
「リモート」として設定されているリポジトリを一旦削除し、手動で再登録する。その際、GitHubから対象リポジトリの「HTTPS」のURLを使用する。
一つずつ見ていきます。
対処の流れ
まず、VSCode上でプルするには「ソース管理」で操作します。git cloneしてきたフォルダならデフォルトで触れるようになっていると思います(これが落とし穴っぽいのですが、、)。
ただ、自分の環境ではこのプルをクリックした後、いつまで経っても処理が終わらず、ずっとぐるぐる回っていました。エラーも出なかったので原因が全く分からずハマってしまいました。
色々と試して探して、こちらの記事にたどり着いて気が付きました。remoteの初期設定が必要だったのです。git cloneしてきていたからか、デフォルトで(この環境では機能しないURLが)設定されてしまっていたようで気が付きませんでした。
まず、デフォルトで入っていた「origin」は削除してしまいます。
登録する用のHTTPSのURLをGitHubからコピーしてきます。
新たにremoteとして登録します。まず「リモートの追加」をクリックします。
先ほどコピーしたURLを打ち込みます。
名前の入力を求められるので、再びoriginという名前で登録しておきます。
これで登録は完了しましたが、このままプルしようとすると以下のようなエラーが出ます。
この「There is no tracking information for the current branch」というのは、上流ブランチ (Upstream Branch) が設定されていないよ、というエラーです。
上流ブランチはローカルレポジトリのブランチ毎に設定するもので、設定しておくと、git push や git pull などのコマンドを打つ際、リモートリポジトリ名とブランチ名を省略できます。
[例]
# 上流ブランチを設定していない場合(リモートリポジトリ名originのmainブランチが対象。originは先ほど付けた名前。)
git pull origin main
# 上流ブランチにoriginのmainブランチを設定している場合
git pull
つまり、VSCodeのGUIで操作する際は後者のコードが実行されており、上流ブランチが設定されていないとエラーが出るようです。今回はremoteも新たに設定したので、上流ブランチも手動で設定する必要があります。
まず、上流ブランチが本当に設定されていないか以下コマンドで確認します。設定されていれば[追跡ブランチ名]が出てくるはずです。
$ git branch -vv
# <出力結果> ブランチ名 コミット番号 [追跡ブランチ名] コミットメッセージ
* main cc88f2b update
やはりまだ設定されていませんね。
では設定してきます。コマンドラインでgit pullをしつつ、オプションに「--set-upstream」を付けます。
# リモートリポジトリ名originのmainブランチを上流ブランチに設定しつつプルする
$ git pull --set-upstream origin main
これで上流ブランチがセットされたはずです。確認してみます。
$ git branch -vv
# <出力結果>
* main cc88f2b [origin/main] update
[追跡ブランチ名]が出力されたので、無事に設定されています!
ちなみに「--set-upstream」オプションは、git pull ではなく git push の場合、「-u」という省略コマンドでも同じ動作をしてくれます。pullの場合は省略コマンドがないみたいです。
これでVSCode上でプルやプッシュが簡単に行えるようになりました!
何かお役に立てば幸いです。
ここまでお読みいただきありがとうございました!
参考
この記事が気に入ったらサポートをしてみませんか?