Git¶
Gitとは¶
Gitはソースコードや設計データの「変更履歴を管理するためのシステム」である。
簡単に言うと
ファイルのタイムマシン
である。
Gitでできること¶
Gitを使うと以下ができる。
- 変更履歴の保存
- 過去の状態に戻す
- 複数人での開発
- ブランチでの並行作業
- 変更の比較
なぜGitが必要なのか¶
普通にフォルダ管理するとこうなる
project_final
project_final2
project_final_real
project_final_final
地獄である。
Gitなら
1つのリポジトリ + 履歴管理
で済む。
Gitの基本構造¶
Gitは3つの領域で構成される。
① ワークツリー¶
実際に作業しているファイル
編集中のフォルダ
② ステージングエリア¶
コミット前の準備場所
git add した状態
③ リポジトリ¶
履歴が保存される場所
git commit された状態
イメージ
ワークツリー → ステージ → リポジトリ
Gitの基本コマンド¶
初期化¶
git init
状態確認¶
git status
追加¶
git add .
コミット¶
git commit -m "message"
履歴確認¶
git log
ブランチとは¶
ブランチは
作業の分岐
である。
例
main
├─ feature-A
├─ feature-B
ブランチの用途¶
- 新機能開発
- バグ修正
- 実験
ブランチ操作¶
作成¶
git branch feature
移動¶
git checkout feature
または
git switch feature
作成と移動同時¶
git switch -c feature
マージ¶
ブランチを統合する操作
feature → main
コマンド
git merge feature
コンフリクト¶
同じ箇所を複数人が変更すると発生する。
例
<<<<<<< HEAD
A
=======
B
>>>>>>> feature
手動で修正する必要がある。
GitHubとの関係¶
GitHubは
Git + クラウド
である。
できること
- リモート保存
- チーム開発
- Issue管理
- CI/CD
リモートリポジトリ¶
GitHubなどのオンライン保存場所
追加¶
git remote add origin URL
送信¶
git push origin main
取得¶
git pull
clone¶
リポジトリをコピーする
git clone URL
HEADとは¶
現在の作業位置を指すポインタ。
今どのコミットを見ているか
commitとは¶
変更の保存単位。
例
コードのスナップショット
commitメッセージ¶
重要なルール
- 何をしたかを書く
- 短く明確にする
例
fix: GPIOバグ修正
add: PWM制御追加
Gitのメリット¶
- 履歴管理できる
- ミスを戻せる
- チーム開発できる
- 実験が安全にできる
Gitのデメリット¶
- 最初は難しい
- コンフリクトが面倒
- コマンドに慣れが必要
Asterでの使い方¶
Asterでは以下に使う。
- 回路設計
- ファームウェア
- ドキュメント(MkDocs)
- 設計履歴管理
例
docs/
firmware/
hardware/
よくあるトラブル¶
addし忘れ¶
コミットに反映されない
push忘れ¶
ローカルだけ更新される
コンフリクト放置¶
コード崩壊
まとめ¶
Gitは開発における必須ツールである。
- 変更履歴を管理できる
- ブランチで安全に開発できる
- GitHubと組み合わせて使う
- チーム開発の基盤になる
組み込み開発でもソフトウェア開発でも「最初に覚えるべきインフラ」と言える。