スポンサーリンク
テクノロジー

Gitの始め方|個人のファイル管理から覚えるコミットとブランチの基本

Gitを個人のメモや設定ファイルの管理から始めるための入門記事です。作業ツリー・ステージング・リポジトリの違い、変更の確認とコミット、ブランチとマージ、競合の直し方を具体例で紹介します。秘密情報を除外する方法、変更を取り消す際の注意、バックアップとの役割分担まで整理します。

パソコンのそばでメモをフォルダーに整理する手元

「最終版.docx」「最終版_修正.docx」「最終版_修正2.docx」とファイルが増え、どれを直せばよいか迷ったことはないでしょうか。名前に日付を足しても、何を変えたのかまでは分かりません。前の表現を取り戻したいときには、複数のファイルを開いて探すことになります。

Gitは、ファイルの変更を説明とともに記録するバージョン管理の道具です。プログラム開発だけでなく、個人のメモや秘密情報を含まない設定ファイルでも仕組みを学べます。まずは練習用の小さなフォルダーで、変更を見る、記録する、別案を試すという順に操作してみます。

スポンサーリンク

バージョン管理とGitの役割

ファイル名の代わりに履歴で版を区別する

バージョン管理とは、ファイルのある時点の状態と、そこへ至る変更を残しておくことです。例えば、同じmemo.mdを編集し続けながら、「買い物メモを作成」「買い足す理由を追記」という区切りを記録します。日常的に開くファイル名を変えずに、過去の内容を調べられます。

Gitでは、この記録の区切りを「コミット」と呼びます。コミットには、記録対象となったファイルの状態、前のコミットとのつながり、作成者、日時、説明文などが含まれます。単なる上書き保存とは異なり、「ここまでを一つの変更として残す」と利用者が決める操作です。

変更を見るときに便利なのが「差分」です。文章なら追加した行や削除した行を見比べられるため、全文を読み直さずに修正箇所を追えます。ただし、Gitが文章の意味まで判断してくれるわけではありません。誤字の修正と内容の変更を区別するには、記録の分け方や説明も必要です。

ファイル名の整理は、Gitを使っても役立ちます。memo.mdとsettings.txtのように用途が伝わる名前を付け、同じ資料のコピーを増やさない運用にすると履歴を追いやすくなります。Gitの外へ渡す提出物などの命名には、ファイル名の付け方と命名ルール|日付・版番号・フォルダーで迷わない整理の手順も参考になります。

GitとGitHubの違い

Gitはパソコン上で履歴を作成・確認するソフトウェアです。GitHubなどは、Gitで管理するデータをネット上へ置き、共有や相談に使えるホスティングサービスです。サービスを使わず、インターネットにつながっていない場所でも、手元でコミットや履歴の確認ができます。

外部へ履歴を送るための設定と操作をしなければ、コミットだけでGitHubへ公開されることはありません。反対に、手元でコミットしても別のパソコンへ自動で届くわけではありません。「手元に記録した」と「別の場所へ送った」を区別すると、保存や共有の状況を取り違えにくくなります。

記録の考え方は、Gitの公式入門資料でも確認できます。まずは手元だけで操作してみましょう。

スポンサーリンク

作業ツリー・ステージング・リポジトリ

Gitを使う際は、編集する場所、次の記録を準備する場所、記録を保管する場所の三つに分けて考えます。すべて同じパソコンの中にありますが、それぞれに入っている内容が一致しているとは限りません。

場所 役割 メモを直す例
作業ツリー 普段のファイルを編集する場所 エディターで本文を書いて保存する
ステージング 次のコミットに入れる内容の準備 記録するファイルの状態を選ぶ
リポジトリ コミットなどを保管する場所 説明を付けた履歴として残す

ステージングは「インデックス」とも呼ばれます。別のフォルダーへ自分でファイルを移動する操作ではありません。git addで指定した時点の内容を、次のコミットに使う状態として登録します。エディターで保存したファイルは、そのまま作業ツリーにあります。

変更を記録する三つの場所(1. 作業ツリー、2. ステージング、3. リポジトリ)
編集した内容を選んでから、履歴として記録します。

例えば、メモの表題を直してgit addを実行し、その後で本文を一行増やしたとします。このときステージングにあるのは表題を直した時点の内容です。追加した一行も同じコミットへ入れたいなら、保存したうえでもう一度git addを実行します。

同じファイルが「ステージ済みの変更」と「ステージしていない変更」の両方に出るのは、このような状態です。二つの状態にそれぞれ違いがあるという意味です。addはその後の編集まで自動で取り込む指定ではありません。git-addの公式説明でも確認できます。

今回の通常の構成では、リポジトリの情報はフォルダー内の.gitに置かれます。中身を手で編集しないでください。本文ファイルだけを別の場所へコピーしても、履歴は付いてきません。

練習用フォルダーで最初のコミットを作る

1. Gitと作業場所を確認する

Gitが未導入なら、Git公式サイトのインストール案内から利用するOSの方法を確認します。導入後はターミナルを開き直し、次のコマンドで確認します。手順や配布方法の最新の情報は公式サイトで確認してください。

git --version

バージョンが表示されれば準備できています。エラーなら、先にインストールや再起動を確認します。実行場所に不慣れなら、ターミナルとシェルの基本|ディレクトリ移動とファイル操作、パイプの考え方で練習できます。

ファイル管理画面で、既存のGit管理フォルダーの外に空のgit-notes-practiceを作り、その中をターミナルで開きます。デスクトップ全体やホームフォルダーで始めると、管理したくない資料まで候補に出るため、専用の小さな場所を使います。仕事の実データやパスワードは持ち込みません。

スポンサーリンク

2. リポジトリと記録者の情報を用意する

練習用フォルダーで一行ずつ実行します。-b mainは最初のブランチ名をmainにする指定です。後半もこの名前で操作します。かなり古いバージョンのGitでは-bが使えないことがあるので、エラーになったら先にGitを更新してください。

git init -b main
git config user.name "Practice User"
git config user.email "practice@example.invalid"
git status

名前とメールアドレスは練習用の例です。公開や共同作業へ進む前に、自分が履歴へ残してよい情報に設定し直します。これはログイン用の認証情報ではなく、コミットに記録される情報です。後で設定を変えても、すでに作ったコミットの情報は自動では変わりません。

ここでは--globalを付けていないため、このリポジトリの設定になります。ほかのリポジトリへ影響しない範囲で試せます。

3. メモを作ってステージする

エディターでmemo.mdを作り、次の内容をUTF-8で保存します。ファイル名がmemo.md.txtになっていないかも確認してください。以下の枠の内容はメモへ書く文章で、ターミナルへ入力するコマンドではありません。

# 買い物メモ

次の休日にノートを買う。

ターミナルへ戻り、状態を見てからファイル名を指定して追加します。

git status
git add memo.md
git diff --staged

最初のstatusでは、まだ追跡していないファイルとしてmemo.mdが出ます。addの後は次のコミットへ入る対象になります。diff --stagedで、表題と本文が追加される内容になっているか確かめます。表示内容に関係のないファイルや秘密情報があれば、記録せずに立ち止まります。

4. 記録して履歴を見る

git commit -m "買い物メモを作成"
git status
git log --oneline

-mの後の引用符内が説明文です。成功すると、コミットを識別する文字列と説明が表示されます。log --onelineはコミットを一行ずつ見る指定です。初回のコミットができる前は、まだ表示できる履歴がありません。

statusで変更がない状態になれば、保存した内容を記録できました。履歴や差分が専用の閲覧画面で開き、入力待ちのように見える環境では、qでターミナルへ戻れます。エラーが出た場合は、次のコマンドを重ねず、実行場所、対象のファイル名、記録者情報を順に確認します。

次のページへ差分の確認とコミットの分け方
スポンサーリンク
  1. 秋の戸口に並ぶかぼちゃの明かりとかぶ、麦束
  2. 資料を手に落ち着いて話し合う二人
  3. ノートパソコンと資料、外付け記憶装置がある机
  4. 冬の木で越冬する卵のうやミノムシ、テントウムシ
  5. 青い折り鶴と三角に折った紙、無地の折り紙