MarkdownとBullet Journal

いわゆるプログラマーのつぶやき

【Git】開発環境を新しいMacに移す

内容

Windows10で開発中の開発環境、Git 、開発プログラムを遠隔のMacGitHubを介して移す作業一式を述べる。なおGItHubに仕様変更があり、2021.8.14以降に同様の作業を考えている方に役立つ内容だと思う。

Macの用意

別記事で述べた内容で準備する。この内容でgit, VSCodeが使える様になっている。

programmingforever.hatenablog.com

WindowsPCに移したい場合は、下記手順でGit BashをインストールすればOK。

  1. https://gitforwindows.org/ にアクセス
  2. DownloadをクリックしてDownloadしたファイルを開く
  3. 各種設定の中で下記は重要
    • インストール先フォルダ:C:\Program Files\Gitなどが望ましい
    • Select componentsで必ず「Git Bash here」にクリック。これは神ツールのため
    • エディター選択画面でVisual Studio Codeを選ぶ

GitHubからMacでgit pull

現在、WIndows10とESP32開発ボードを用いてESP32のプログラムを開発している状況とする。このWindowsからGitHubのリモートリポジトリにpushしたものを、新規Macでpullから始める場合は以下の手順となる。

  1. GitHubにアクセスしてクローン情報(HTTPS版)を入手(リモートリポジトリが無ければ、最初にGitHubでPrivateのリモートリポジトリを作成しておく)
  2. 作業フォルダを作りたい「親フォルダ」に移動要
  3. そこで「git clone 上記1でcopyしたURL」を実行するとリポジトリ名の作業フォルダが作られる

しかしうまく行かない。開発ボードでの実行までに以下4つの課題解決があった。

  1. GitHubの仕様変更①トークン変更
  2. GitHubの仕様変更②defaultブランチをmaster→main変更
  3. Mac常駐プログラムの影響
  4. ESP32ボードの手動操作

以下、それぞれの解決方法を記載する。

トークンの解決

1. GitHub接続がトークン認証に変更

https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/

2021.8.14以降のGitHub接続がパスワードからトークンに変わっている。従来のgit pullでは繋がらない。

2.個人アクセストークンを使用する

https://docs.github.com/ja/github/authenticating-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

  • トークンの作成
  • GitHubページの右上プロフィール画像をクリックし、続いてSettingsをクリック
  • 左サイドバーで [Developer settings] をクリック
  • 左のサイドバーでPersonal access tokens(個人アクセストークン)をクリック
  • [Generate new token] をクリック
  • トークンにわかりやすい名前を付ける
  • このトークンに付与するスコープ、すなわち権限を選択。 トークンを使用してコマンドラインからリポジトリにアクセスするには、[repo] を選択。とりあえず全部ONでOK
  • [Generate token] をクリック
  • 表示されたトークンを保存
  • しかしまだ設定がいるので次の作業へ
3. トークンを受け入れるためのMac設定

https://docs.github.com/ja/github/getting-started-with-github/getting-started-with-git/updating-credentials-from-the-macos-keychain

このキーチェーンアクセスでGItHubの項目そのものを抹消しないとトークンを受け付けない

GitHub標準がmainに変更になったことへの対応

gitのdefaultはmasterのままなのに、GitHubのdefaultはmainが標準になった。WindowsからGitHubにpushしても一致しないため、Githubからリポジトリをクローンすると、何もないGitHu標準のmainブランチしかcloneされない。

参照記事: https://off.tokyo/blog/can-not-clone-except-the-master-branch/

解決手段①:そのまま何とかする方法:

解決手順としてはまずリモートからpull対象のリモートのクローンしたいブランチ名を探し(通常はorigin/master)、次に対象のリモートブランチをcheckoutで指定する。checkoutの第一引数にローカルリポジトリでのブランチ名を、第二引数にリモートから落としていたいブランチ名を指定する

$ # -- ①リモートのブランチを調べる
$ git branch -r
origin/HEAD -> origin/main # -- GitHubのデフォルトブランチ main が見える
origin/develop    # -- その他ブランチ
origin/master     # -- gitのデフォルトブランチ master が見える
$
$ git checkout -b develop origin/develop -- ②対象にブランチを切り替え

あるいは単に下記で良かったかもしれない(未実証、確認したら追記予定)

$ # --(初回のみ)pull前にブランチを指定
$ git branch --set-upstream-to=origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.
$
$ git pull # -- pull実行
解決手段②:GitHubのデフォルトブランチ名をmasterに戻す
解決手段③:gitのデフォルトブランチ名をmainにする
$             # - gitのデフォルトブランチをmainにするcomfig設定 
$ git config --global init.defaultBranch main
$             # -ローカルで変えたブランチをリモートへpush
$ git push -u origin main

③UARTがつながらないトラブル

これは常駐プログラムのTOURBOXが悪さをしていたので、開発時はMacメニュー右上のTOURBOXアイコン操作でOFFにすると解決する。

④ロード出来ないトラブル(Macのみ)

  • ESP32開発ボードに接続出来て、何やらLEDも色々光るがタイムアウトする
  • その状態で1回FLASHスイッチを押すと書き込みを開始する
  • 書き込み終了後にRESETスイッチを押すとプログラムが走る

無事に開発ボードでプログラムが動いたので若干の修正を加えてcommit, pushしておく。

ESP32開発:上記のMacでpushした分を遠隔地のWindowsでpull

$ # --(初回のみ)pull前にブランチを指定(*pullがエラーとなった場合)
$ git branch --set-upstream-to=origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.
$
$ git pull # -- pull実行
Updating a5a9cbf..c91a277
Fast-forward
 README.md    | 2 ++
 src/main.cpp | 4 ++--
 2 files changed, 4 insertions(+), 2 deletions(-)
 create mode 100644 README.md 

とりあえずこれでVSCode+PlatformIO+gitによるESP32開発が、Windows - GitHub - Macの連携で行えるようになった。