目次

第1章:Sourcetreeとは?

1.1 バージョン管理って何?

プログラムやドキュメントを作成すると、何度も修正や更新を行います。そのたびに「以前の状態に戻したい」「誰がどの変更を加えたのか知りたい」と思うことはありませんか?
こうした変更履歴を記録し、管理する仕組みをバージョン管理といいます。

バージョン管理を使うと、次のようなメリットがあります。

  • 変更履歴を確認できる → いつ・誰が・どんな変更をしたのかがわかる
  • 前の状態に戻せる → もしミスをしても、簡単に修正前の状態に戻せる
  • チームで作業しやすい → 同じファイルを複数人で編集しても、競合を避けやすい

バージョン管理システムの中で、最も広く使われているのがGit(ギット)です。

イギリス英語のスラングで【git】には間抜けという意味があります。


1.2 GitとSourcetreeの関係

Gitは、ファイルの変更履歴を記録するツールです。しかし、Gitの操作は基本的にコマンドライン(黒い画面)で行います。
初心者にとっては少し難しく感じるかもしれません。

そこで登場するのがSourcetree(ソースツリー)です。

Sourcetreeは、Gitの操作を視覚的にわかりやすくしてくれる無料のツールです。
例えば、以下のような操作をマウス操作で簡単に行えます。

  • ファイルの変更を保存(コミット)
  • 過去の履歴を確認
  • 新しいブランチ(作業用の枝)を作成
  • 変更を統合(マージ)

つまり、Sourcetreeを使えば、難しいコマンドを覚えなくてもGitを活用できるのです!


1.3 Sourcetreeのインストールと初期設定

Sourcetreeを使うには、まずインストールが必要です。

1.3.1 Sourcetreeのダウンロード

  1. Sourcetree公式サイトにアクセス
  2. Windowsのインストーラーをダウンロード
  3. ダウンロードしたファイルを開き、画面の指示に従ってインストール

1.3.2 初期設定

インストール後、最初に行う設定は以下のとおりです。

  1. Gitの設定
    Sourcetreeでは、内部でGitを使用します。初回起動時に自動で設定されることが多いですが、必要に応じてGitのパスを指定します。
  2. リモートリポジトリの設定(省略可)
    初心者のうちは、ローカル(自分のパソコン)だけでGitを使うことができます。
    そのため、GitHubなどの外部サービスとの連携は後回しにしても問題ありません。
  3. ユーザー情報の登録
    コミットの記録に使用する「ユーザー名」と「メールアドレス」を設定します。
    • 例:
      • ユーザー名: Yamazaki Yusei
      • メールアドレス: example@example.com

設定が完了すれば、Sourcetreeの準備は完了です!
次の章では、実際にリポジトリを作成し、Gitの基本操作を体験してみましょう。

第2章:基本のGit操作

2.1 リポジトリを作成しよう

リポジトリとは?

Gitでは、ファイルやその変更履歴を管理するための「フォルダ」のようなものをリポジトリと呼びます。
リポジトリを作成すると、そのフォルダ内のファイルの変更履歴を記録できるようになります。

英語の【repository】には保管場所という意味があります。

Sourcetreeでリポジトリを作成する

  1. Sourcetreeを開く
  2. 画面上部の「+ Create」をクリック
  3. リポジトリの保存先のパスを選択(例:C:\Users\ユーザー名\Documents\MyProject
  4. 「作成」ボタンをクリック

→ これでリポジトリの準備ができました!このフォルダ内でGitによるバージョン管理が可能になります。


2.2 ファイルを追加・変更してコミットする

コミットとは?

コミットとは、ファイルの変更を記録する操作です。
「この時点での状態を保存する」というイメージを持つとわかりやすいです。

英語の【commit】には確定という意味があります。

ファイルを追加してコミットしてみよう

  1. 作成したリポジトリのフォルダを開き、新しいファイル(例:README.txt)を作成
  2. Sourcetreeに戻ると、新しいファイルが「作業ツリーのファイル」に表示される
  3. 追加したいファイルを選択し、「ステージング(インデックス)」に追加
  4. 「コミットメッセージ」を入力(例:「最初のファイルを追加」)
  5. 「コミット」ボタンをクリック

→ これで変更が保存されました!以降、ファイルを編集するたびに、適宜コミットを行いましょう。

なぜ、ステージングエリアがあるのか?

Gitのステージングエリア(インデックス)は、コミットの前に変更を一時的に管理するための領域です。変更を細かく管理しながら、適切な状態でコミットできるようになります。

例えば、複数のファイルを編集した際に、一部だけをコミットしたい場合、その一部をステージングエリアに追加し、残りは後回しにできます。また、変更を確認しながらコミット内容を整理できるため、意図しない変更の混入を防ぎ、履歴を綺麗に保つことが可能になるのです。


2.3 変更履歴を確認する

変更履歴を確認することで、過去の編集内容を把握できます。

Sourcetreeで履歴を確認する

  1. Sourcetreeの画面左側にある「History」タブをクリック
  2. これまでに行ったコミットが一覧表示される
  3. 各コミットをクリックすると、変更内容を確認できる

履歴の色の意味

  1. 削除された行(赤色・"-" 表示)
    • 変更前のコードが削除されたことを示します。
    • - が行の先頭につき、背景が赤くなります。
  2. 追加された行(緑色・"+" 表示)
    • 新しく追加されたコードを示します。
    • + が行の先頭につき、背景が緑になります。
  3. 変更された部分(黄・オレンジ系)(プラスアルファ)
    • 追加・削除ではなく、一部の変更がある行を示すことがあります。
    • 特に、改行の変更やスペースの追加・削除などがある場合に、ハイライトされることがあります。

過去の状態に戻す

もし「間違えた変更をしてしまった!」という場合でも、Gitでは簡単に以前の状態に戻せます。

  1. 「コミット」タブから戻りたいコミットを選択
  2. 右クリックして「このコミットまでリセット」→「Hard - 全ての作業コピーの変更を破棄」

→ これで指定した時点まで戻せます(ただし、注意して使いましょう!)


これで、リポジトリの作成から基本的なファイル管理までの流れを理解できました。
次の章では、ブランチを使った作業の進め方を学んでいきます!

第3章:ブランチを使ってみよう

3.1 ブランチとは?

ブランチとは、作業の流れを分岐させる仕組みです。
本流(main または master)を維持したまま、新しい機能の開発や修正を行うために使用します。

英語の【branch】には枝という意味があります。

ブランチを使うメリット

  • 安全に開発できる → メインのコードに影響を与えずに作業できる
  • 並行作業ができる → 複数の機能を同時に開発可能
  • 問題がなければ統合できる → 完成したら元のブランチに簡単に戻せる

Sourcetreeを使えば、ブランチの操作を視覚的に簡単に行えます。


3.2 新しいブランチを作成する

例えば、新しい機能を開発するために「feature-1」というブランチを作成するとします。

Sourcetreeでブランチを作成する

  1. Sourcetreeを開く
  2. 画面上部の「ブランチ」ボタンをクリック
  3. 新しいブランチ名 を入力(例:「feature-1」)
  4. 「作成」ボタンを押す

→ これで「feature-1」ブランチが作成されました!このブランチで作業すれば、メインのコードに影響を与えずに開発できます。


3.3 ブランチを切り替える

作業中に別のブランチに移動することも簡単にできます。

Sourcetreeでブランチを切り替える

  1. 画面左側の「ブランチ」リストを開く
  2. 切り替えたいブランチ(例:「master」)をダブルクリック

→ これで「master」ブランチに戻れました!元の状態で作業を再開できます。


3.4 ブランチをマージする

ブランチで開発が完了したら、変更をメインのブランチ(master)に統合します。
この操作を マージ(merge) といいます。

Sourcetreeでブランチをマージする

衝突がない場合

  1. メインのブランチ(master)にスイッチする
  2. 画面上部の「マージ」ボタンをクリック
  3. マージするブランチ(例:「feature-1」)を選択
  4. 「OK」をクリック

衝突がある場合

メインのブランチ(master)にスイッチする
Sourcetreeの画面左側のブランチ一覧から、master ブランチをダブルクリックしてチェックアウトします。

「マージ」ボタンをクリックする
画面上部の「マージ」ボタンをクリックします。

マージするブランチを選択する
例えば feature-1 ブランチを選択し、「OK」をクリックします。

競合(コンフリクト)の解決

  1. マージ時に「競合が発生しました」と表示された場合、該当のファイルを確認します。
  2. 競合があるファイルはSourcetreeの「作業ツリーのファイル」タブに表示されます。
  3. 該当ファイルをダブルクリックすると、競合の内容が表示されるので、手動で修正します。具体的には余分な文字を消したり、必要な文字を書いてあるべき状態に書き換えます。
  4. 競合を解決したファイルを保存します。

マージの完了

  1. すべての競合を解決したら、Sourcetreeで「コミット」を行います。
  2. メッセージを入力し、「コミット」をクリックすると、マージが完了します。
マージ後

→ これで「feature-1」の変更が「master」に統合されました!不要になったブランチは削除してもOKです。


これで、ブランチを活用した開発の基本を学べました。
次の章では、リモートリポジトリを使ってチームで作業する方法を学んでいきます!

第4章:リモートリポジトリを使う

4.1 リモートリポジトリとは?

これまで、Sourcetreeを使って自分のパソコン内(ローカル環境)でGitを管理してきました。
しかし、チームで作業する場合やバックアップを取るために、リモートリポジトリを活用することが一般的です。

リモートリポジトリとは?

  • クラウド上やサーバー上にあるGitリポジトリのこと
  • ローカル(自分のパソコン)と同期して使う
  • GitHubやなどのサービスを利用することが多い

本研修では、リモートリポジトリとしてGitHubを利用します。

4.1 GitHubアカウントの作成

GitHubを利用するためには、GitHubのアカウントが必要です。
まだ持っていない場合は、公式サイトからアカウントを作成してください。

GitHubアカウントの作成手順

GitHubを利用するには、以下の手順でアカウントを作成しましょう。

  1. GitHubの公式サイト にアクセスする。
  2. 「Sign up」をクリックし、ユーザー名、メールアドレス、パスワードを入力する。
  3. 画面の指示に従ってアカウントを作成し、メールの確認を行う。

4.2 SSHキーの登録(推奨)

EclipseとGitHubを連携するには、SSHキーまたはHTTPSの認証方式を設定する必要があります。
SSHを使用すると、毎回パスワードを入力する必要がなくなるため便利です。

4.2.1 SSHキーの生成

  1. ターミナルまたはコマンドプロンプトを開く
  2. 以下のコマンドを実行 ssh-keygen -t rsa -b 4096 -C "your-email@example.com"
  3. ~/.ssh/id_rsa.pub の内容をコピー

SSHキーの解説

GitHubのSSHキーは、秘密鍵と公開鍵を用いた認証方式です。SSH接続では、ユーザーが持つ秘密鍵と、GitHubに登録した公開鍵を組み合わせて認証を行います。

秘密鍵(id_ed25519 など)はローカル環境に安全に保管し、他者と共有してはいけません。一方、公開鍵(id_ed25519.pub など)はGitHubに登録することで、SSH経由でのアクセスが可能になります。

SSHを使用すると、HTTPS認証のように毎回パスワードを入力せずに、リモートリポジトリとのやり取りが安全に行えます。

4.2.2 GitHubにSSHキーを登録

  1. GitHubの 「Settings」→「SSH and GPG keys」 を開く
  2. 「New SSH key」 をクリック
  3. 「Title」に適当な名前を入力(例: My Laptop)
  4. 先ほどコピーした SSHキーの内容をペースト
  5. 「Add SSH key」をクリック

これで、GitHubとEclipseの通信がスムーズになります



3. SSHキーをSourcetreeで使用する

SSH接続をSourcetreeで利用できるように設定します。

手順

  1. SSHエージェントに鍵を追加
    • ターミナルで以下のコマンドを実行:eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
    • Identity added: ~/.ssh/id_rsa と表示されればOK。
  2. リモートリポジトリのURLをSSHに変更
    • Sourcetreeで対象のリポジトリを開く。
    • 画面上部の「リモート」タブをクリック。
    • リモートリポジトリのURLをHTTPSからSSHに変更https://github.com/ユーザー名/リポジトリ名.git ↓ git@github.com:ユーザー名/リポジトリ名.git
    • 「OK」をクリック。
  3. 接続テスト
    • ターミナルで以下のコマンドを実行:ssh -T git@github.com
    • Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell access.
      と表示されれば成功。

4. SourcetreeでSSH経由でGitHubにアクセス

これで、SourcetreeからGitHubのリモートリポジトリへSSH接続が可能になります。

リポジトリのクローン(SSH経由)

  1. Sourcetreeを開く
  2. 「リモート」ボタンをクリック
  3. 「リモート」タブを開く
  4. リポジトリ設定
    • リモートリポジトリのURLをSSH形式で入力git@github.com:ユーザー名/リポジトリ名.git
    • クローン先のフォルダを選択
  5. 「クローン」ボタンをクリック
  6. SSHキーを使用してリポジトリにアクセス
    • これでSSH経由でリポジトリを利用できます。

この設定をすれば、GitHubのリポジトリをパスワードなしでSourcetreeから操作できます


4.3 リポジトリをクローンする

クローン(clone) とは、リモートリポジトリのコピーを自分のパソコンに作成することです。
リモートリポジトリが用意されている場合、クローンすればすぐに作業を始められます。

Sourcetreeでリポジトリをクローンする

  1. Sourcetreeを開く
  2. 「リモート」ボタンをクリック
  3. 「リモート」タブを開く
リポジトリ設定
  1. リモートリポジトリのURLを入力(例:https://github.com/example/repository.git
  2. クローン先のフォルダを選択(例:C:\Users\ユーザー名\Documents\Project
  3. 「クローン」ボタンをクリック

→ これでリモートリポジトリのコピーがローカルに作成されました!


4.4 変更をプッシュする

プッシュ(push) とは、ローカルの変更をリモートリポジトリに送信することです。

Sourcetreeでプッシュする

  1. 変更をコミットする(第2章参照)
  2. 画面上部の「プッシュ」ボタンをクリック
  3. プッシュ先のリモートブランチを確認
  4. 「プッシュ」ボタンを押す

→ これで変更がリモートリポジトリに反映されました!


4.5 最新の状態をプルする

プル(pull) とは、リモートリポジトリの最新の変更をローカルに取り込むことです。
チームで作業する場合、自分の変更をプッシュする前に必ずプルすることが重要です。

Sourcetreeでプルする

  1. 画面上部の「プル」ボタンをクリック
  2. プルするブランチを選択(通常はmaster)
  3. 「OK」をクリック

→ これで最新の状態を取得できました!


これでリモートリポジトリの基本的な使い方がわかりました。
次の章では、よくある操作とトラブル対処について学んでいきます!

第5章:よくある操作とトラブル対処

5.1 コミットを取り消したい(リセットとリバート)

作業を進める中で、「間違えてコミットしてしまった!」ということはよくあります。
その場合、Gitではリセット(reset)やリバート(revert)を使って修正できます。

リセット(reset)

リセットは、指定したコミット以降の変更をなかったことにする方法です。
ただし、すでにプッシュしたコミットをリセットすると、他の人の作業に影響が出るため注意が必要です。

Sourcetreeでリセットする方法

  1. Sourcetreeの「コミット」タブを開く
  2. 取り消したいコミットを右クリック
  3. 「このコミットまでリセット」 を選択
  4. 「ハードリセット」 を選ぶと、コミットも変更も削除される(慎重に!)

リセットは、ローカルでのみ使うのが基本!


リバート(revert)

リバートは、「間違えたコミットを取り消すための新しいコミットを作成する」方法です。
プッシュ済みのコミットも影響なく取り消せるので、安全に使えます。

Sourcetreeでリバートする方法

  1. 「コミット」タブを開く
  2. 取り消したいコミットを右クリック
  3. 「このコミットをリバート」 を選択

リバートなら履歴を壊さずに修正できる!


5.2 間違えてプッシュしたときの対処法

誤ってリモートリポジトリにプッシュしてしまった場合、基本的にはリバートを使うのが安全です。
もし完全に取り消したい場合は、以下の方法もありますが、注意が必要です。

強制プッシュ(慎重に!)

リセットした後、強制的にリモートリポジトリを上書きする方法です。

Sourcetreeで強制プッシュする方法

  1. リセット(5.1の手順)を実行
  2. 画面上部の「プッシュ」ボタンをクリック
  3. 「強制プッシュ(--force)」にチェックを入れて実行

強制プッシュは、チームで作業している場合は絶対に注意!


5.3 コンフリクトが発生した場合の解決方法

コンフリクト(conflict)とは?

コンフリクトとは、同じファイルの同じ部分を、異なる内容で編集した場合に発生する問題です。
Gitはどちらの変更を採用すべきかわからないため、手動で解決する必要があります。

コンフリクトが発生したら?

  1. Sourcetreeの「マージ」タブを開く → コンフリクトが発生しているファイルが表示される
  2. 該当ファイルをダブルクリック → エディタで開く
  3. 「どの変更を残すか」決めて修正
  4. 修正後、再度コミットしてプッシュ

コンフリクトを避けるには、こまめにプルしておくのが大事!


これで、よくある操作とトラブル時の対処方法を学びました。
次の章では、シンプルなブランチ構成での開発フローを紹介します!

第6章:シンプルなブランチ構成での開発フロー

6.1 シンプルなブランチ構成とは?

Gitのブランチ管理にはさまざまな方法がありますが、初心者向けにはできるだけシンプルな構成を採用するのがベストです。
ここでは、「master」と「feature」の2つのブランチだけを使う シンプルな運用方法を紹介します。

基本のブランチ構成

  1. masterブランチ → メインのコードが置かれる場所(安定版)
  2. featureブランチ → 新しい機能を開発するための作業ブランチ

開発の流れ
新しい機能を開発する場合、masterからfeatureブランチを作成し、作業が終わったらmasterに統合(マージ)します。


6.2 シンプルな開発の流れ

① masterブランチを最新の状態にしておく

作業を始める前に、masterブランチを最新の状態に更新しておきます。

  1. masterブランチにチェックアウト
  2. 「プル」ボタンを押して最新の状態に更新

② featureブランチを作成

新しい機能を開発するためにfeatureブランチを作成します。

  1. 「ブランチ」ボタンをクリック
  2. ブランチ名を入力(例:feature-login)
  3. 「作成」ボタンを押す

→ これでfeatureブランチが作成されました!


③ featureブランチで作業をする

作業中の変更は、こまめにコミットしておきます。

  1. ファイルを編集
  2. Sourcetreeで変更を確認し、「ステージング」に追加
  3. 適切なコミットメッセージを入力(例:「ログイン画面を作成」)
  4. 「コミット」ボタンを押す

作業が進むごとに、定期的にコミットしておくと安心!


④ masterブランチに統合(マージ)

作業が完了したら、featureブランチの変更をmasterに統合します。

  1. masterブランチにチェックアウト
  2. 「マージ」ボタンをクリックし、featureブランチを選択
  3. 「OK」ボタンを押す
  4. 問題がなければ、featureブランチを削除(右クリック→削除)

これで開発が完了!


6.3 シンプルなブランチ管理のポイント

  1. 基本は「master」と「feature」だけ
    • 複雑なブランチ構成は不要
    • 1つの機能につき1つのfeatureブランチを作成
  2. こまめにプル&プッシュ
    • 作業開始前に プル
    • 作業完了後に プッシュ
  3. 不要なブランチは削除
    • マージが完了したら、featureブランチは削除して管理をシンプルにする

これで、シンプルなブランチ構成での開発フローを学びました!
次の章では、Sourcetreeをもっと便利に使うためのテクニックを紹介します。

第7章:Sourcetreeをもっと便利に使う

7.1 コミットメッセージのルールを決めよう

Gitでは、変更内容をコミットメッセージに書くことで、どんな変更をしたのか記録できます。
適切なメッセージを書いておくと、後で履歴を確認するときにとても役立ちます。

良いコミットメッセージの例

短く、わかりやすく書く

  • 例:「ログイン画面のレイアウト修正」
  • 例:「ユーザープロフィールの編集機能を追加」

一貫したフォーマットを決める

  • [追加] 新しい機能を追加
  • [修正] バグ修正
  • [変更] コードのリファクタリング

ルールを決めておくと、チームでの作業もスムーズ!


7.2 変更を一時的に保存する(スタッシュ)

作業途中で「ちょっと別の作業をしたいけど、今の変更は後で使いたい…」ということはありませんか?
そんなときに使えるのがスタッシュ(stash)です。

Sourcetreeでスタッシュを使う

  1. 変更をコミットせずに、「作業ツリーのスタッシュ」ボタンをクリック
  2. スタッシュ名を入力(例:「途中の作業を保存」)し、OKを押す
  3. 作業が一時的に消える(元の状態に戻る)

スタッシュを戻す

  1. 「スタッシュ」タブを開く
  2. 戻したいスタッシュを右クリック → 適用

一時的に保存しておいて、後で続きを作業できる!


7.3 過去のコミットを修正する

「あ、さっきのコミット、間違えた!」と思ったら、修正する方法があります。

直前のコミットを修正

  1. 「コミット」タブを開く
  2. 最新のコミットを右クリック → 「コミットを修正」
  3. 修正したい内容を追加し、再コミット

これなら、間違えたコミットメッセージやファイルの追加漏れを簡単に直せる!


7.4 変更を視覚的に確認する

Sourcetreeでは、変更内容を「視覚的に」確認できるので、履歴の追跡が簡単です。

変更履歴を確認

  1. 「コミット」タブを開く
  2. 過去のコミットをクリックすると、変更内容が表示される
  3. ファイルごとの変更点もチェック可能!

コードの変更履歴が見やすく、過去の修正をすぐに探せる!


これで、Sourcetreeをもっと便利に使うためのテクニックを学びました!
次の章では、よくあるエラーメッセージとその対処法を紹介します。

第8章:よくあるエラーメッセージとその対処法

GitやSourcetreeを使っていると、時々エラーメッセージが表示されることがあります。
ここでは、初心者が遭遇しやすいエラーとその解決方法を紹介します。


8.1 「このブランチはリモートに追跡されていません」

エラーの意味

新しく作成したブランチをリモートリポジトリにプッシュしようとすると、次のようなメッセージが出ることがあります。

このブランチはリモートに追跡されていません。

解決方法

  1. 「プッシュ」ボタンをクリック
  2. 「リモートブランチを作成」にチェックを入れる
  3. 「OK」を押してプッシュする

これで、リモートリポジトリに新しいブランチが作成される!


8.2 「Your branch is ahead of ‘origin/master’」

エラーの意味

「ローカルのブランチがリモートより進んでいる」という警告です。
つまり、自分の変更をプッシュしないと、リモートと同期が取れない状態です。

Your branch is ahead of ‘origin/master’ by X commits.

解決方法

  1. 「プッシュ」ボタンをクリックして、変更をリモートに送信する
  2. それでも解決しない場合は、最新の変更を取得するために「プル」してからプッシュ

8.3 「コンフリクトが発生しました」

エラーの意味

リモートリポジトリとローカルのブランチで、同じファイルを異なる内容に変更していた場合に発生します。

CONFLICT (content): Merge conflict in [ファイル名]

解決方法

  1. Sourcetreeの「マージ」タブを開く
  2. コンフリクトが発生しているファイルをダブルクリック
  3. エディタで開き、どの変更を残すか決めて手動で修正
  4. 修正したら「ステージング」に追加して、コミット

コンフリクトを解決するには、どの変更を残すかを手動で決めることが必要!


8.4 「Permission denied (publickey)」

エラーの意味

リモートリポジトリにプッシュしようとしたとき、SSHキーが正しく設定されていない場合に発生します。

Permission denied (publickey).

解決方法

  1. SSHキーを作成する
    • Windowsなら「Git Bash」、Macなら「ターミナル」を開き、次のコマンドを入力:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    • 作成された「id_rsa.pub」をコピーし、リモートリポジトリ(GitHubなど)に登録
  2. Sourcetreeの設定を確認
    • 「ツール」→「オプション」→「認証」タブを開く
    • SSHキーが設定されているか確認する

リモートリポジトリへのアクセスには、正しいSSHキーを設定することが重要!


8.5 「fatal: refusing to merge unrelated histories」

エラーの意味

別の履歴を持つリポジトリ同士をマージしようとすると発生します。

fatal: refusing to merge unrelated histories

解決方法

  1. コマンドラインを開く(Sourcetreeの「ターミナル」ボタンを押す)
  2. 以下のコマンドを入力:git pull origin master--allow-unrelated-histories
  3. その後、Sourcetreeで「プル」を実行

異なる履歴を持つリポジトリ同士を統合する場合は、オプションを指定する!


これで、よくあるエラーメッセージとその解決方法を学びました!
次の章では、よくあるユースケースについて紹介します。

以下の内容を追加します。


8.6 「error: cannot delete branch」

error: cannot delete branch

エラーの意味
このエラーは、削除しようとしたブランチが現在チェックアウトされているか、リモートブランチとして存在している場合に発生します。

解決方法

  1. 削除対象のブランチから離れる
    • Sourcetreeで「ブランチ」タブを開き、masterや develop など他のブランチに切り替えてから、削除を試みてください。
  2. ローカルブランチを削除する(ターミナル使用)
    • Sourcetreeの「ターミナル」ボタンを押し、以下のコマンドを実行: git branch -d ブランチ名
    • -d(小文字)はマージ済みのブランチを削除できます。
    • -D(大文字)を使うと、未マージのブランチも強制削除できます。 git branch -D ブランチ名
  3. リモートブランチを削除する
    • リモートブランチを削除するには、以下のコマンドを実行: git push origin --delete ブランチ名

チェックアウトしていないことを確認し、適切なコマンドで削除する!

第9章:よくあるユースケースとSourcetreeの活用方法

Sourcetreeを使うと、Gitの操作を視覚的に管理できるため、さまざまなシーンで役立ちます。
ここでは、初心者がよく直面するユースケースを取り上げ、その解決方法を紹介します。

ユースケース1:ローカルリポジトリでGitを使い始める


あなたは、新しいプロジェクトを開始するために、Sourcetreeでローカルリポジトリを作成し、ファイルを管理できるようにしたいと考えています。

このユースケースでは、次の手順を実行します。

  1. Sourcetreeでローカルリポジトリを作成
  2. ファイルを追加してコミット
  3. 変更履歴を確認
  4. 不要な変更を元に戻す

① Sourcetreeでローカルリポジトリを作成

Sourcetreeを使って、Gitの管理対象となる新しいプロジェクトフォルダを作成します。

手順

  1. Sourcetreeを開く
  2. 「+ 新しいリポジトリ」ボタンをクリック
  3. 「ローカルリポジトリを作成」タブを選択
  4. フォルダの場所を指定(例:C:\Users\ユーザー名\Documents\MyProject
  5. リポジトリ名を入力(例:「MyProject」)
  6. 「作成」ボタンを押す

指定したフォルダがGitの管理対象になり、ローカルリポジトリが作成されました!


② ファイルを追加してコミット

リポジトリを作成したら、ファイルを追加してGitに記録(コミット)します。

手順

  1. 作成した「MyProject」フォルダを開く
  2. 「README.md」ファイルを新規作成
    • 中身に「# MyProject」と記述
  3. Sourcetreeを開き、「作業ツリーの変更」タブをクリック
  4. 変更したファイル(README.md)を選択し、「ステージング」に追加
  5. コミットメッセージを入力(例:「最初のREADMEを追加」)
  6. 「コミット」ボタンをクリック

これでGitに変更が記録されました!


③ 変更履歴を確認する

コミットした変更の履歴を確認してみましょう。

手順

  1. Sourcetreeの「コミット」タブを開く
  2. 最新のコミットをクリック
  3. 変更内容が表示される(どのファイルがどのように変更されたか確認可能)

履歴を確認することで、過去の作業を簡単に追跡できます!


④ 不要な変更を元に戻す(作業ツリーの破棄)

間違えて変更した場合、変更を取り消して元の状態に戻すことができます。

手順

  1. Sourcetreeの「作業ツリーの変更」タブを開く
  2. 取り消したいファイルを右クリック
  3. 「作業ツリーの破棄」を選択
  4. 確認メッセージが表示されるので、「OK」を押す

ファイルの変更が取り消され、最後のコミットの状態に戻りました!


まとめ

このユースケースでは、Sourcetreeを使ってローカルリポジトリを作成し、ファイルの管理を開始する方法を学びました。

ローカルリポジトリを作成する
ファイルを追加してコミットする
変更履歴を確認する
不要な変更を元に戻す(作業ツリーの破棄)

これで、Gitを使ってローカル環境でのバージョン管理ができるようになりました!


ユースケース2:特定の変更を取り消す(直前のコミット修正、リセット、リバート)


あなたはSourcetreeを使って作業を進めているときに、間違った内容でコミットしてしまったことに気づきました。
または、コミットせずに変更していたファイルを元に戻したいと思いました。

このユースケースでは、次のような場面に対応する方法を学びます。

  1. 直前のコミットを修正する
  2. コミットを取り消す(リセット)
  3. 過去のコミットを取り消す(リバート)
  4. 未コミットの変更を元に戻す(作業ツリーの破棄)

① 直前のコミットを修正する(コミットの上書き)

「コミットした後に、ファイルを追加し忘れた!」という場合、直前のコミットを修正できます。

手順

  1. Sourcetreeの「コミット」タブを開く
  2. 最新のコミットを右クリックし、「コミットを修正」を選択
  3. 追加したいファイルをステージングに追加
  4. 必要ならコミットメッセージを修正
  5. 「コミット」ボタンを押す

これで、直前のコミットを修正できました!

注意

  • 修正したコミットをリモートリポジトリにプッシュする前なら安全に使える
  • すでにプッシュ済みの場合は、履歴が書き換わるため注意!

② コミットを取り消す(リセット)

「このコミット自体が不要だった…」という場合、リセットを使います。

リセットの種類

リセットの種類説明
ソフトリセットコミットを取り消すが、ファイルの変更は残す
ミックスリセットコミットとステージングを取り消し、作業ツリーの変更は残す
ハードリセットコミットも作業ツリーの変更も完全に削除(注意!)

Sourcetreeでリセットを実行する

  1. 「コミット」タブを開く
  2. 取り消したいコミットを右クリック
  3. 「このコミットまでリセット」→ 適切なリセット方法を選択
  4. 「OK」をクリック

リセット完了!

注意

  • 「ハードリセット」は、元に戻せないため慎重に!
  • すでにプッシュ済みのコミットをリセットすると、他の人に影響が出る

③ 過去のコミットを取り消す(リバート)

「以前のコミットの変更を取り消したいけど、履歴は残したい」という場合、リバートを使います。

Sourcetreeでリバートを実行する

  1. 「コミット」タブを開く
  2. 取り消したいコミットを右クリック
  3. 「このコミットをリバート」ボタンをクリック
  4. 新しいコミットが作成され、変更が取り消される

リバートなら、履歴を壊さずに変更を取り消せる!

リバートが適しているケース

  • すでにプッシュしたコミットを取り消したいとき
  • 履歴を残しつつ、誤った変更を元に戻したいとき

④ 未コミットの変更を元に戻す(作業ツリーの破棄)

「まだコミットしていない変更を元に戻したい!」という場合、作業ツリーの破棄を使います。

Sourcetreeで作業ツリーを破棄する

  1. 「作業ツリーの変更」タブを開く
  2. 破棄したいファイルを右クリック
  3. 「作業ツリーの破棄」を選択
  4. 確認メッセージが出るので、「OK」をクリック

これで、ファイルが最後のコミットの状態に戻りました!

注意

  • この操作は元に戻せないため慎重に!
  • コミットしていない変更が完全に消える

まとめ

このユースケースでは、特定の変更を取り消す方法を学びました。

直前のコミットを修正する(コミットの上書き)
コミットを取り消す(リセット)
過去のコミットを取り消す(リバート)
未コミットの変更を元に戻す(作業ツリーの破棄)

状況に応じて適切な方法を選べるようになれば、Gitをより安心して使えます!

ユースケース3:コンフリクトを解決する(競合したときの対処法)


シナリオ

あなたはチーム開発を行っており、リモートリポジトリの最新の変更を取得しようとしました。
しかし、プル(pull)した際に「コンフリクト(競合)」が発生し、Gitがどの変更を採用すべきか判断できなくなりました。

このユースケースでは、Sourcetreeを使ってコンフリクトを解決する方法を学びます。


① コンフリクトとは?

コンフリクト(競合)とは、同じファイルの同じ部分を、異なるブランチで編集したときに発生する問題です。
Gitはどちらの変更を採用すべきか判断できないため、手動で修正する必要があります。


② コンフリクトの発生例

以下のような状況でコンフリクトが発生します。

  1. Aさんが masterブランチで index.html を編集し、リモートにプッシュ
  2. あなたも index.html を編集し、ローカルでコミット
  3. あなたがプル(pull)すると、「競合(コンフリクト)」が発生!
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

③ コンフリクトが発生したら?

Sourcetreeでは、競合が発生したファイルが「マージ」タブに表示されるので、手動で解決できます。

コンフリクトを解決する手順

  1. Sourcetreeの「マージ」タブを開く
  2. 競合が発生したファイル(例:index.html)をダブルクリック
  3. テキストエディタで開き、どの変更を残すか決めて修正
  4. 修正が完了したら、ファイルを「ステージング」に追加
  5. コンフリクト解決のコミットを作成
  6. リモートにプッシュ(push)する

コンフリクトが解決し、マージが完了しました!


④ コンフリクト発生時のファイルの見方

コンフリクトが発生したファイルを開くと、次のようなマークが表示されます。

<<<<<<< HEAD
あなたがローカルで編集した内容
=======
リモートにある別の変更内容
>>>>>>> origin/master

これを手動で修正!

  1. どの変更を採用するか決める
  2. 不要な <<<<<<<, =======, >>>>>>> を削除
  3. 修正後に保存し、ステージング&コミット

⑤ コンフリクトを防ぐためのポイント

  • こまめにプル(pull)して、リモートと同期する
  • ブランチを活用して、作業を分ける
  • チーム内で、誰がどのファイルを編集しているか把握する

まとめ

このユースケースでは、コンフリクト(競合)の解決方法を学びました。

コンフリクトが発生する原因を理解する
Sourcetreeで競合ファイルを確認する
手動で変更を修正し、ステージング&コミット
リモートにプッシュして、コンフリクトを解消する

コンフリクトの仕組みを理解していれば、チーム開発でもスムーズに対応できます!

ユースケース4:過去の特定の変更を別のブランチに適用する(チェリーピック)


シナリオ

あなたは開発を進めている途中で、過去のあるコミットの変更だけを、現在のブランチに適用したいと考えています。
このとき、チェリーピック(cherry-pick) を使うことで、特定のコミットを別のブランチに取り込むことができます。

このユースケースでは、Sourcetreeを使ってチェリーピックを行う方法を学びます。


① チェリーピックとは?

チェリーピック(cherry-pick)とは、過去の特定のコミットだけを、現在のブランチに適用する操作です。

例えば、次のような状況を考えます。

  1. 「feature-login」ブランチで「ログイン画面のデザイン修正」をコミット
  2. 「master」ブランチにも、この修正だけを適用したい
  3. ただし、「feature-login」の他の変更は取り込みたくない

この場合、チェリーピックを使えば、「ログイン画面のデザイン修正」コミットのみを masterに適用できる!


② 過去のコミットをチェリーピックする手順

Sourcetreeを使うと、視覚的に簡単にチェリーピックできます。

手順

  1. Sourcetreeを開き、「コミット」タブを選択
  2. チェリーピックしたいコミットを探す
    • 例:「ログイン画面のデザイン修正」コミット
  3. 対象のコミットを右クリックし、「このコミットをチェリーピック」を選択
  4. チェリーピックを適用するブランチを確認
    • 例:「master」ブランチでチェリーピックする場合は、master に切り替えておく
  5. 「OK」をクリックし、変更を適用
  6. 適用後、コミットを確認し、必要ならプッシュ(push)する

これで、指定したコミットの変更内容だけを、別のブランチに適用できました!


③ チェリーピックのメリット

  • 過去の特定の修正を、他のブランチに反映できる
  • マージせずに、一部の変更だけ取り込める
  • 余計な変更を含めずに、必要な修正だけを適用できる

④ チェリーピックを活用するケース

1つの機能だけを他のブランチに適用したい

  • 例:「ログイン機能のバグ修正」だけを、すぐに本番環境(master)に反映したい

複数のブランチで共通の修正を適用したい

  • 例:「エラーメッセージの文言修正」を、すべての開発ブランチに適用したい

⑤ チェリーピック時の注意点

  • 競合(コンフリクト)が発生する可能性がある
    • 適用先のブランチに、すでに別の変更が入っている場合、手動で修正が必要になる
  • あまり多用しすぎると、履歴が複雑になる
    • 「本当にチェリーピックが必要か?」を考えて使う
    • 大規模な修正なら、マージ(merge)の方が適している場合もある

まとめ

このユースケースでは、過去の特定の変更を、別のブランチに適用する方法(チェリーピック) を学びました。

チェリーピックとは、特定のコミットだけを適用する操作
Sourcetreeでは、コミットを右クリックするだけでチェリーピックできる
一部の修正だけを反映したいときに便利!
競合(コンフリクト)には注意が必要

適切にチェリーピックを使えば、開発の柔軟性がアップします!