ARCS6のためのgithub手順書 FRONT PAGE
最終更新日:2023/06/06

コレは何?/What is this?

githubでARCS6を同期するための手順。 チームワークを発揮するためには必須。
朝研究室に来たらまずは pull、帰る前に push しよう! (こまめな同期がコンフリクトを防ぐ)

手順書の読み方

灰色背景

はコマンドを示し, puttyなどでwindows端末から接続し、コマンドか編集内容をCtrl+Cでコピー、 puttyの画面上にフォーカスを移して右クリックでペースト、そうするとラクに作業ができます。


★ GitHubアカウントの作成とトークンの生成

1. GitHubアカウントを作成

https://github.com/で普通にアカウントを作成する。

2.「Personal Access Token」を生成する

githubの設定ページを開いて, 下記の画面で「Personal Access Token」を生成する。

repoからgistまでを全てチェックして、期限を3ヶ月に設定して「Generate token」を押す。 (詳細については github トークン でググれば丁寧な解説ページが出てくるので、そこを見ると良い)
最終的に、ghp_から始まる文字列が得られるので、どこかにメモっておく。


★ 最初期導入編:全く新しい別端末への導入

1. gitをインストール

RedHat系なら,

dnf install git

Ubuntu系なら,

apt install git

としてインストールする。 (通常はデフォルトでgitが入ってることが多い)

2. 自分用ディレクトリを作成

cd /
mkdir expsrc
cd expsrc
mkdir yoko ←自分用ディレクトリの名前

上記のファイルパスはあくまでも一例で、好きなように設定してオーケー。


★ 導入編I:ARCS6公開リポジトリに新しい端末からアクセスする場合

1. gitの初期設定

cd /expsrc/yoko ←既存の自分用ディレクトリ(例)
mkdir ARCS6
cd ARCS6
git init
git config --global user.name 自分のユーザ名
git config --global user.email 自分のメールアドレス
git remote add origin https://github.com/Sidewarehouse/ARCS6.git

2. gitの初期pull

git pull origin main

3. ブランチ名を変更

git branch -m master main

4. 自分用ディレクトリ(例:/expsrc/yoko/ARCS6)にファイル一式が入っていることを確認


★ 導入編II:非公開ロボットリポジトリに新しい端末からアクセスする場合

1. まず、導入編Iを実行してから、その後に下記をすること

2. 非公開リポジトリのコラボレータになる

3. gitの初期設定

cd /expsrc/yoko/ARCS6/robot/
mkdir UniDisc ←既存の非公開ロボット名(例)
cd UniDisc
git init
git remote add origin https://github.com/Sidewarehouse/ARCS6-UniDisc.git

上記は「UniDisc」という名前の既にある非公開ロボットのコードにアクセスする例。

4. gitの初期pull

git pull origin main

ここでユーザ名とパスを聞かれるはず。パスは先述のトークンをコピペで入れる。
(putty画面上で右クリックするとペーストできる。ただし画面上には表示されない)

5. ブランチ名を変更

git branch -m master main

6. ファイル一式が入っていることを確認

cd /expsrc/yoko/ARCS6/robot/UniDisc
ls

★ 運用編I:ロボット制御系のコーディングをする場合

1. 目的のロボットディレクトリまで移動

cd /expsrc/yoko/ARCS6/robot/UniDisc

2. 他の誰かが変更しているかもしれないので、まずはプル

git pull origin main
Username for 'https://github.com': 自分のユーザ名
Password for 'https://sidewarehouse@github.com': ghp_から始まる自分の2要素認証トークン

3. コーディング開始~~~コーディング終了

cd /expsrc/yoko/ARCS6/robot/UniDisc/CurrentCtrl ←電流制御の例

4. クリーンにしておく

cd /expsrc/yoko/ARCS6/robot/UniDisc/CurrentCtrl
make clean

5. 追加・編集したファイルをgitに認識させる

cd /expsrc/yoko/ARCS6/robot/UniDisc/CurrentCtrl
git add .
git status

ココで下記のようなファイル一覧(例)が表示される。

Changes to be committed: (use "git restore --staged ..." to unstage) new file: ConstParams.cc new file: ConstParams.hh new file: ControlFunctions.cc new file: InterfaceFunctions.hh new file: OfflineCalculations.cc Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: ../../../lib/RingBuffer.hh Untracked files: (use "git add ..." to include in what will be committed) ../../../lib/MovingDifferentiator.cc ../../../lib/MovingDifferentiator.hh

= 追加・編集され、尚且つgitに認識設定されたファイル
= 追加・編集されたものの、gitに認識設定されていないファイル

6. ↑の赤のファイルを認識設定したければ

git add <ファイル名>
git status

赤のファイルが緑になっていればオーケー。

7. コミット&プッシュ

git commit -m "電流制御器を実装" ←簡単なコメントを書いておく
git push -u origin main
Username for 'https://github.com': <自分のユーザ名>
Password for 'https://自分のユーザ名@github.com': <ghp_から始まる自分の2要素認証トークン>

8. ログ確認

git log

一番上の右の方に「(HEAD -> main, origin/main)」とあれば、 ローカルリポジトリとリモートリポジトリが同期されているのでオーケー。


運用編II:ARCS6基本システム自体のコーディングをする場合(libも含む)

1. ARCS6ディレクトリまで移動

cd /expsrc/yoko/ARCS6

2. 他の誰かが変更しているかもしれないので、まずはプル

git pull origin main
Username for 'https://github.com': 自分のユーザ名
Password for 'https://sidewarehouse@github.com': ghp_から始まる自分の2要素認証トークン

3. コーディング開始~~~コーディング終了

cd /expsrc/yoko/ARCS6/robot/general/BaseCtrl ←コードベースの例

4. クリーンにしておく

cd /expsrc/yoko/ARCS6/robot/general/BaseCtrl
make clean

5. 非公開のため無視するファイルを確認

git status --ignored

無視する非公開ファイルに漏れがないかチェック

6. 追加・編集したファイルをgitに認識させる

cd /expsrc/yoko/ARCS6
git add .
git status

ココでファイル一覧が表示される。 非公開ファイルが含まれていないかチェック

7. コミット&プッシュ

git commit -m "バグをFIX" ←簡単なコメントを書いておく
git push -u origin main
Username for 'https://github.com': 自分のユーザ名
Password for 'https://sidewarehouse@github.com': ghp_から始まる自分の2要素認証トークン

8. ログ確認

git log

一番上の右の方に「(HEAD -> main, origin/main)」とあればオーケー。

★ その他よく使うコマンド

A. 直前のコミットを取り消す

git reset --hard HEAD^
git push -f origin main

B. ローカルのmainをリモートのmainに強制的に合わせる

git fetch origin main
git reset --hard origin/main

C. マージポリシーの変更

git config pull.rebase false

D. ローカルのブランチ名を変更

git branch -m <古いブランチ名> <新しいブランチ名>

★ WSL上で動かすときの場合の問題解決

Windowsから「\\wsl$」でアクセスして、ARCS6のコードを編集しようとすると、 permission deniedで編集できない。

1. そこで、

vi /etc/wsl.conf
で下記を追記して保存
[user] default=root

2.下記を2回打ってでWSLを終了

exit

3. Windows側のコマンドプロンプト(cmd.exe)で、

wsl --terminate Ubuntu-20.04
と打ってWSLを完全停止

4. その後、WSLを再度起動すると、シェルのプロンプトが、 ユーザ名@ホスト名だったのが、root@ホスト名に変わってることを確認

5. そのあとに、Windowsから「\\wsl$」でアクセスすると、正常に編集できるようになる