ヘルプデスク出身として、クラウドエンジニア転職を目指す中で、かなりの確率で求人に書かれているのがGitへの知識が前提条件で求められていることに気づき早急に学ばないといけないと思いGitの勉強を始めました。
セクション1:まずはGitのイメージを掴む
Gitとは?
Gitは「コードやファイルのバージョンを管理するためのツール」。
開発の現場ではほぼ必ず使用されています。
•コードだけでなく、あらゆるファイルの履歴を管理できる
•誰が・いつ・何を変更したかを追跡できる
•以前のバージョンへ戻すことも可能
ーーーーーーーーーーーーーーーーーーーーーーー
Git誕生の背景
Linuxカーネル開発で使っていたバージョン管理システムのライセンスが切れたため、
「なら自分たちで作ろう」とリーナス・トーバルズ氏が開発したのがGitの始まりです。
ーーーーーーーーーーーーーーーーーーーーーーー
GitHubとは?
GitHubは「Gitのリポジトリをオンライン上で管理するサービス」です。
•ファイルのバージョンをクラウド上で管理
•世界中の開発者と共同開発できる(プルリクエスト・レビューなど)
•他人のプロジェクトの閲覧や参加も可能
リポジトリの種類
•公開リポジトリ → 無料
•非公開リポジトリ → 有料(Bitbucketは非公開でも無料)
セクション2:初期設定と基本コマンド
バージョン確認
git version
ーーーーーーーーーーーーーーーーーーーーーーー
初期設定(ユーザー情報)
git config --global user.name "GitHubユーザー名"
git config --global user.email "GitHub登録メールアドレス"
git config --global core.editor "code --wait"
設定確認:
git config --global --list
ーーーーーーーーーーーーーーーーーーーーーーー
ターミナルでよく使うコマンド
cd
ディレクトリを移動します。
ls
ディレクトリ内の内容を表示します。
ls -aで隠しファイルも表示。
mkdir
ディレクトリを新規作成。
rm
ファイルを削除。
cp
ファイルをコピー。
mv
ファイルの移動・名前変更。
cat
ファイルの内容を表示。
ーーーーーーーーーーーーーーーーーーーーーーー
セクション3:Gitの仕組みを理解する
Gitは「スナップショット」で管理する
他のツールは「変更差分」を記録しますが、
Gitは**スナップショット(その時点の状態)**を保存します。
これにより、ブランチ操作やマージが高速に行えます。
ーーーーーーーーーーーーーーーーーーーーーーー
コミットの流れ
[Commit 1]
↓
[Commit 2]
↓
[Commit 3]
各コミットは直前の「親コミット」を記録しており、
過去の状態をたどることができます。
ローカルとリモートの違い
ローカルリポジトリ:自分のPC上の履歴
リモートリポジトリ:GitHubなどのオンライン上の履歴
リポジトリとは、履歴データを保存するデータベースです。
ローカルの3階層構造
ワークツリー
↓
ステージ(インデックス)
↓
リポジトリ
それぞれの役割
•ワークツリー:作業中のファイル群
•ステージ:コミット前の準備エリア
•リポジトリ:確定したコミット履歴を保存
ーーーーーーーーーーーーーーーーーーーーーーー
Gitのデータ構造まとめ
•データは「圧縮ファイル」「ツリー」「コミット」で構成される
•コミットが親コミットを持ち、変更履歴をたどれる
•Gitの本質は「データをスナップショットとして圧縮保存」すること•
•各コマンドはこのデータに対する操作を行っている
ーーーーーーーーーーーーーーーーーーーーーーー
セクション4:実際の操作
リポジトリを作成
git init
.gitディレクトリが作成され、管理情報が保存されます。
ーーーーーーーーーーーーーーーーーーーーーーー
既存プロジェクトをクローン
git clone <リポジトリURL>
既存のGitプロジェクトを複製します。
ーーーーーーーーーーーーーーーーーーーーーーー
変更をステージに追加
git add <ファイル名>
すべてを追加する場合:
git add .
ーーーーーーーーーーーーーーーーーーーーーーー
変更をコミット(記録)
git commit -m "メッセージ"
メッセージ構成の例
1変更内容の要約
2空行
3変更理由
ーーーーーーーーーーーーーーーーーーーーーーー
コミット時のエラー対応
$ git add .
$ git commit
hint: Waiting for your editor to close the file... code --wait: code: command not found
error: There was a problem with the editor 'code --wait'.
Please supply the message using either -m or -F option.
Macで code --wait が設定されていたが、
code コマンドがPATH未登録のためエラー発生。
以下を実行して解決:
VSCODE上で
[Command Palette (⌘ + Shift + P)] → “Shell Command: Install ‘code’ command in PATH”
状況・履歴の確認コマンド
変更確認
git status
変更差分の確認
git diff
ステージ後の差分確認
git diff --staged
履歴確認
git log
よく使うオプション
•git log --oneline:1行で表示
•git log -p :ファイルの変更差分を表示
•git log -n 5:最新5件のみ表示
※ add・commit 前に git diff で変更確認する習慣をつけると安全です。
ーーーーーーーーーーーーーーーーーーーーーーー
ファイル操作編
ファイル削除を記録
git rm <file>
git rm -r <directory>
ローカルには残したい場合:
git rm --cached <file>
ーーーーーーーーーーーーーーーーーーーーーーー
ファイルの移動・リネーム
git mv old.txt new.txt
または以下でも同様の結果になります。
mv old.txt new.txt
git rm old.txt
git add new.txt
ーーーーーーーーーーーーーーーーーーーーーーー
GitHubへのプッシュ
リモートリポジトリを追加
git remote add origin <URL>
リモートへプッシュ
git push origin master
これでローカルの変更がGitHubに反映されます。
ーーーーーーーーーーーーーーーーーーーーーーー
まとめ
•Gitの目的:バージョン管理によるチーム開発の効率化
•コミット:スナップショット(状態)を記録
•ステージ:コミット準備のための一時領域
•GitHub:履歴をリモートで共有・管理するサービス
•一連の流れは add → commit → push
