🙀

今更ながらのGitにゅうもん

に公開

Gitとは、ソフトウェア開発で最も広く使われている分散型バージョン管理システム(DVCS)です。

1. そもそもGitとは?

Gitは、ソースコードの変更履歴を記録し、過去の状態に戻したり、複数人で安全に共同作業できるツール。
ローカルに履歴を保存する「分散型」であるため、ネットの環境がなくても使えます。

用語解説

  • バージョン管理:ファイルの変更履歴を記録し、過去のバージョンに戻れる仕組み。
  • 分散型バージョン管理(DVCS):リポジトリが中央サーバーだけでなく、各開発者のPCにも保存される方式。
  • リポジトリ(repository):Gitで管理するファイルのルート的な何か。コードや履歴がすべて保存される。

2. Gitのインストール

Windows

公式サイトからダウンロードしてインストール。

Mac

Homebrewを使う場合

brew install git

Linux (Ubuntu/Debian系)

sudo apt update
sudo apt install git

Gitの動作確認

git --version

用語解説

  • Homebrew:Mac向けのパッケージ管理ツール。ソフトのインストールを簡単にする。
  • パッケージ管理ツール:ソフトウェアのインストールや更新を簡単に行うツール。

3. Gitの初期設定

最初に、ユーザー名とメールアドレスを設定。(やらないと使えない昨日があります)

git config --global user.name "名前"
git config --global user.email "メールアドレス"

現在の設定を確認

git config --list

用語解説

  • config:Gitの設定情報。ユーザー名、メールアドレス、エディタなどを指定できる。
  • グローバル設定:全リポジトリに適用される設定。--global オプションをつけると設定が全体に適用される。

4. Gitの基本コマンド

4.1 リポジトリの作成

git init

現在のディレクトリをGitリポジトリにする。

4.2 ファイルの追加とコミット

git add ファイル名
git commit -m "変更内容を説明するメッセージ"

用語解説

  • ステージング(staging):コミット前に変更を一時的に保存すること。
  • コミット(commit):変更を確定し、履歴に保存すること。
  • メッセージ-m で指定するコミットの説明。

4.3 コミット履歴の確認

git log
git log --oneline --graph --all

用語解説

  • ログ(log):過去のコミット履歴を一覧表示するコマンド。
  • グラフ表示(graph):ブランチの関係を視覚的に確認できるオプション。

4.4 変更の取り消し

git reset -- ファイル名  # 作業中の変更を破棄
git reset HEAD ファイル名  # ステージングを解除(ツリーはそのまま)
git reset --hard HEAD^  # 直前のコミットを削除

用語解説

  • checkout:ブランチの切り替えや、特定の状態に戻すコマンド。
  • reset:コミットの取り消しや、変更を過去の状態に戻すコマンド。

5. ブランチとマージ

5.1 ブランチの作成と切り替え

git branch ブランチ名
git switch ブランチ名
git switch -b ブランチ名  # 作成と切り替えを同時に

5.2 ブランチの一覧表示

git branch

5.3 ブランチのマージ

git checkout main
git merge ブランチ名

用語解説

  • ブランチ(branch):開発を分岐させる機能。新機能の開発などに使う。基本的に開発中のデータはmainブランチにマージしない。時にやりますが。
  • マージ(merge):異なるブランチの変更を統合する操作。

6. GitHubとの連携

6.1 リモートリポジトリの設定

git remote add origin https://github.com/ユーザー名/リポジトリ名.git

originの部分は好きな文字に変えられます。

6.2 GitHubへプッシュ

git push -u origin main

6.3 GitHubからクローン

git clone https://github.com/ユーザー名/リポジトリ名.git

用語解説

  • リモートリポジトリ(remote repository):GitHubなどのサーバー上にあるリポジトリ。
  • プッシュ(push):ローカルの変更をリモートリポジトリにアップロードすること。
  • クローン(clone):リモートリポジトリをコピーしてローカルで使えるようにすること。

7. トラブルシューティング

7.1 競合(Conflict)の解決

git add .
git commit -m "競合を解決"

7.2 過去のバージョンに戻る

git reset --hard コミットID

7.3 誤ってpushしたファイルを削除

git rm --cached ファイル名
git commit -m "不要なファイル削除"
git push origin main

用語解説

  • 競合(conflict):異なる変更が同じファイルに加えられ、マージできない状態。
  • ハードリセット(hard reset):過去の状態に完全に戻す操作。
  • キャッシュ(cached):Gitのステージングエリアにあるファイル。

8. 基本のまとめ

Gitを使えば、過去の変更を管理しながら安全に開発できる。
GitHubと連携すれば、チーム開発やリモート作業も簡単に!

重要なポイント

  1. git init でリポジトリ作成
  2. git addgit commitgit push の流れで管理
  3. git branch を活用して安全に開発
  4. git log で履歴を確認
  5. git reset で誤った変更を取り消し

.gitgnoreについて

.gitignore は、Gitで管理しない(無視する)ファイルやフォルダを指定するための設定ファイル。

1. .gitignore の基本

  • .gitignore に書かれたファイルやフォルダは git add してもステージングされない。
  • 不要なファイル(ログ、ビルドファイル、環境設定ファイルなど)をコミットしないために使う。

記述ルール

  • # でコメントを書ける
  • * はワイルドカード(任意の文字列にマッチ)
  • / はフォルダを指定
  • ! をつけると除外(無視しない)

2. .gitignore の例

2.1 一般的な .gitignore

# コンパイル済みファイル
*.class
*.o
*.exe

# ログファイル
*.log

# バイナリファイル
*.png
*.jpg
*.zip

# OS固有のファイル
.DS_Store
Thumbs.db

# 環境設定ファイル
.env
config.json

2.2 言語・フレームワーク別の .gitignore

  • C言語(Makefileを使う場合)
# コンパイル済みファイル
*.o
*.out
*.exe

# Makefileの生成物
*.d
  • PHP
# キャッシュ・ログ
/cache/
*.log

# 環境変数
.env
  • Android(Android Studio)
# ビルド関連
/build/
.gradle/
.idea/

# ユーザーごとの設定
/local.properties

3. .gitignore を適用する方法

3.1 新しく追加する場合

  1. .gitignore を作成
  2. 無視したいファイルを記述
  3. 反映する
git add .gitignore
git commit -m "Add .gitignore"

3.2 既にGitで管理されているファイルを .gitignore に追加したい

.gitignore に書いただけでは、すでにGitで追跡されているファイルは無視されない。
その場合は git rm --cached を使う。

git rm --cached ファイル名
git commit -m "Stop tracking ファイル名"

フォルダごと削除したい場合:

git rm -r --cached フォルダ名
git commit -m "Stop tracking フォルダ名"

4. .gitignore のオススメテンプレート

GitHubには、言語ごとの .gitignore のテンプレがあります。便利です。使いましょう。
GitHubの.gitignoreテンプレ集


5. .gitgnoreのまとめ

  • .gitignore はGitで管理しないファイルを指定するファイルです
  • .gitignore に追加しても、既に追跡されているファイルは git rm --cached しないと無視されないです。めんどっ(((

Discussion