0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Git入門】第8章 ブランチと stash(TortoiseGit)

0
Last updated at Posted at 2026-11-02

この章では、ブランチを作り、ブランチの上でコミットし、ブランチを切り替えます。作業の途中で別のブランチの作業をしなければならなくなったときに、作業途中の変更を一時的によける方法(stash)も学びます。

この章で学ぶこと

  • ブランチを作る・切り替える・削除する方法
  • ブランチを切り替えたときに、作業フォルダーのファイルがどうなるか
  • 作業途中の変更を一時的によける方法(stash)と、戻す方法

8.1 ブランチを作る

部署一覧のページを作る作業を、main ではなく、新しいブランチ dept-list の上で行います(ブランチの考え方は 第1章)。作業が終わるまで、main は今の状態のまま変わりません。

  1. 作業を始める前に、リポジトリのフォルダーを右クリックし、TortoiseGit → プル で最新の状態にします。

  2. リポジトリのフォルダーを右クリックし、TortoiseGit → ブランチを作成 を選びます。

  3. ブランチの作成の画面で、次のとおりにして「OK」をクリックします。

    ブランチを作成の画面。ブランチに dept-list、基点は HEAD (main)、新しいブランチに切り替えるにチェック
    図8-1 ブランチを作成の画面(赤枠)

    項目 値
    名前の「ブランチ」 dept-list
    基点 「HEAD (main)」のまま
    新しいブランチに切り替える チェックを入れる
  4. リポジトリのフォルダーを右クリックし、メニューの「Git コミット」の表示が Git コミット -> "dept-list" に変わったことを確かめます。今いるブランチが dept-list になりました。

【便利な使い方】今いるブランチを確かめる

今いるブランチの名前は、右クリックのメニューの「Git コミット -> "ブランチ名"」に表示されます。コミットの画面やログの画面の上の方にも表示されます。ブランチを使い始めたら、コミットする前に、今いるブランチを確かめる習慣を付けてください。

【知識メモ】ブランチの名前の付け方

ブランチの名前は、半角の英小文字・数字・ハイフンで、作業の内容が分かるように付けます(例:dept-list、fix-member-name)。現場では、feature/dept-list のように、種類を表す言葉を前に付ける決まりもあります。現場、先輩に合わせてください。

8.2 ブランチでコミットする

  1. git フォルダーに、次の内容で dept.html を作ります(メモ帳で作る場合は、第3章と同じく、ファイルの種類を「すべてのファイル」、エンコードを「UTF-8」にして保存します)。
git/dept.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>部署一覧</title>
</head>
<body>
  <h1>部署一覧</h1>
  <table>
    <tr>
      <th>ID</th>
      <th>部署名</th>
    </tr>
    <tr>
      <td>1</td>
      <td>総務部</td>
    </tr>
    <tr>
      <td>2</td>
      <td>営業部</td>
    </tr>
    <tr>
      <td>3</td>
      <td>開発部</td>
    </tr>
    <tr>
      <td>4</td>
      <td>人事部</td>
    </tr>
  </table>
</body>
</html>
  1. git/index.html を開き、社員一覧のリンクの下に、次の緑の行を書き足して保存します。
git/index.html(一部)
  <p><a href="list.html">社員一覧</a></p>
  <p><a href="dept.html">部署一覧</a></p>
</body>
  1. リポジトリのフォルダーを右クリックし、「Git コミット -> "dept-list"」を選びます。
  2. 「バージョン管理外のファイルを表示」にチェックを入れ、git/dept.html と git/index.html の2つにチェックを入れます。新しく作ったファイルは、管理外のファイルとして表示されます。
  3. メッセージを 部署一覧のページを追加 にして、「コミット」をクリックします。

2つのファイルは、どちらも「部署一覧のページを作る」という1つの目的の変更なので、1つのコミットにまとめます。

8.3 ブランチを切り替える

  1. リポジトリのフォルダーを右クリックし、TortoiseGit → 切り替え/チェックアウト を選びます。

  2. 切り替えの画面で、「ブランチ」に main を選んで、「OK」をクリックします。結果の画面を閉じます。

    切り替え/チェックアウトの画面。ブランチに main
    図8-2 切り替え/チェックアウトの画面(赤枠:ブランチ)

  3. エクスプローラーで git フォルダーを開きます。dept.html が無くなり、index.html にも部署一覧のリンクが無いことを確かめます。

  4. もう一度 TortoiseGit → 切り替え/チェックアウト で、dept-list に切り替えます。dept.html と部署一覧のリンクが戻ったことを確かめます。

ブランチを切り替えると、Git は、作業フォルダーのファイルを、切り替えた先のブランチの最新のコミットの状態に入れ替えます。dept.html は dept-list にしかコミットしていないので、main に切り替えると作業フォルダーから無くなり、dept-list に戻すと現れます。ファイルが消えたわけではありません。

【ご注意】切り替えた後は、ファイルを開き直す

メモ帳や Eclipse でファイルを開いたままブランチを切り替えると、エディターの画面には、切り替える前の内容が残ります。そのまま保存すると、切り替える前のブランチの内容が、今のブランチに書き込まれてしまいます。ブランチを切り替える前にファイルを閉じ、切り替えた後に開き直してください(Eclipse では、プロジェクトを右クリックして「リフレッシュ」を選びます)。

8.4 作業途中の変更をよける(stash)

dept-list で作業している途中に、main の社員一覧の誤りをすぐに直すように頼まれたとします。作業途中の変更はまだコミットしたくありませんが、そのままでは main に切り替えられないことがあります。このようなときは、作業途中の変更を一時的によけておきます。この操作を stash(スタッシュ)といいます。

作業途中の変更を作る

  1. 今いるブランチが dept-list であることを確かめます。
  2. git/dept.html を開き、<h1> の行の下に、次の緑の行を書き足して保存します。これを「作業途中の変更」とします。
git/dept.html(一部)
  <h1>部署一覧</h1>
  <p>2026年10月現在</p>
  <table>
  1. このまま TortoiseGit → 切り替え/チェックアウト で main に切り替えようとすると、ローカルの変更が上書きされるため切り替えられない、というエラーが表示されます。エラーの画面を閉じます。

    切り替えのエラーの画面。Your local changes to the following files would be overwritten by checkout
    図8-3 切り替えのエラー

dept.html は main には無いファイルなので、切り替えると作業フォルダーから消えることになり、作業途中の変更も失われてしまいます。Git はそれを防ぐために、切り替えを止めます。

変更をよけて、別のブランチで作業する

  1. リポジトリのフォルダーを右クリックし、TortoiseGit → スタッシュへ変更を隠す を選びます。

  2. メッセージの欄に 部署一覧の日付(作業途中) と入力して、「OK」をクリックします。結果の画面を閉じます。

    スタッシュの画面。スタッシュメッセージに部署一覧の日付(作業途中)
    図8-4 スタッシュの画面(赤枠:スタッシュメッセージ)

  3. git/dept.html を開き直し、日付の行が無くなった(最後のコミットの状態に戻った)ことを確かめて、閉じます。変更は消えたのではなく、よけてあります。

  4. TortoiseGit → 切り替え/チェックアウト で main に切り替えます。今度は切り替えられます。

  5. main で、頼まれた修正をします。git/list.html を開き、6人目(鈴木 花子)の部署を、次のとおりに直して保存します。

git/list.html(一部)
    <tr>
      <td>6</td>
      <td>鈴木 花子</td>
      <td>人事部</td>
    </tr>
  1. 「Git コミット -> "main"」で、メッセージを 鈴木 花子の部署を人事部に修正 にしてコミットし、続けてプッシュします。

よけた変更を戻す

  1. TortoiseGit → 切り替え/チェックアウト で dept-list に切り替えます。

  2. リポジトリのフォルダーを右クリックし、TortoiseGit → 隠した変更を戻す を選びます。結果の画面を閉じます。

    TortoiseGit のメニュー。隠した変更を戻す
    図8-5 TortoiseGit のメニュー(赤枠:隠した変更を戻す)

  3. git/dept.html を開き、日付の行が戻ったことを確かめます。

  4. 作業の続きが終わったものとして、「Git コミット -> "dept-list"」で、メッセージを 部署一覧に日付を追加 にしてコミットします。

【知識メモ】よけた変更の一覧

stash は何回でも行え、よけた変更は一覧として残ります。一覧は、TortoiseGit → スタッシュ一覧で見られます。「隠した変更を戻す」は、いちばん新しくよけた変更を戻し、一覧から消します。戻したら、一覧に要らない変更が残っていないかを確かめてください。

【ご注意】stash は、よけたブランチとは結び付いていない

stash でよけた変更は、どのブランチでも戻せます。main でよけた変更を、うっかり dept-list で戻すこともできてしまいます。変更を戻す前に、よけたときと同じブランチにいることを確かめてください。

8.5 ブランチを削除する

使い終わったブランチは削除します。ここでは、練習用のブランチを作って削除します(dept-list は第9章で使うので、削除しません)。

  1. TortoiseGit → 切り替え/チェックアウト で main に切り替えます。

  2. TortoiseGit → ブランチを作成 で、名前の「ブランチ」を try にし、「新しいブランチに切り替える」のチェックを外して作ります。

  3. リポジトリのフォルダーを右クリックし、TortoiseGit → refブラウザ を選びます。

  4. 左の「heads」を選ぶと、ローカルのブランチの一覧(dept-list・main・try)が表示されます。try を右クリックし、「ブランチを削除」を選んで、確認の画面で「はい」をクリックします。

    refブラウザの画面。heads の try を右クリックしたメニュー
    図8-6 refブラウザの画面(赤枠:ブランチを削除)

  5. 一覧から try が無くなったことを確かめて、画面を閉じます。

【ご注意】マージしていないブランチの削除に気を付ける

ブランチを削除すると、そのブランチにしか無いコミットは、ログの画面にも表示されなくなります。マージ(第9章)していないブランチを削除しようとすると、確認の画面が表示されます。そのブランチのコミットが本当に要らないかを確かめてから削除してください。今いるブランチは削除できません。

8.6 解説:ブランチとは

Git のブランチは、コミットを1つ指している名前です。ブランチは、そのブランチの最新のコミットを指していて、そのブランチでコミットすると、指す先が新しいコミットに移ります。今いるブランチを表す印を HEAD(ヘッド)といいます。

main のコミットの列から dept-list が枝分かれし、main と dept-list はそれぞれの最新のコミットを指している
図8-7 この章の終わりのブランチ。main と dept-list は、それぞれの最新のコミットを指している

  • ブランチを作ると、今いるコミットを指す名前が1つ増えます。コミットがコピーされるわけではないので、ブランチはすぐに作れます。
  • main と dept-list は、枝分かれした後、それぞれ別のコミットを積み重ねています。第9章では、dept-list のコミットを main に取り込みます(マージ)。

ブランチのしくみは、Git の公式の解説書の Pro Git「ブランチとは」 で、図を使って詳しく説明されています。

8.7 うまくいかないときは

症状 考えられる原因と対処
ブランチを作ったのに、コミットが main に入った ブランチを作るときに「新しいブランチに切り替える」にチェックを入れていなかったので、main のままコミットしました。コミットする前に、右クリックのメニューの「Git コミット -> "ブランチ名"」で、今いるブランチを確かめてください。
ブランチを切り替えられない まだコミットしていない変更があり、切り替えると失われるためです。コミットするか、8.4 の stash でよけてから切り替えます。
「隠した変更を戻す」で、コンフリクト(競合)が起きたと表示される よけた後に、同じ行を変えたコミットがあります。直し方は第9章で学びます。よけた変更は、直し終わるまでスタッシュ一覧に残っているので、無くなりません。
切り替えた後、ファイルの中身が切り替える前のままになっている エディターでファイルを開いたままになっています。ファイルを開き直してください(8.3)。

そのほかのエラーは、付録B「よくあるエラーと対処法」を見てください。

8.8 まとめと確認問題

まとめ

  • TortoiseGit →「ブランチを作成」でブランチを作る。「新しいブランチに切り替える」にチェックを入れると、作ったブランチに切り替わる
  • TortoiseGit →「切り替え/チェックアウト」でブランチを切り替える。作業フォルダーのファイルが、切り替えた先のブランチの状態に入れ替わる
  • 今いるブランチは、右クリックのメニューの「Git コミット -> "ブランチ名"」で確かめる
  • 作業途中の変更は「スタッシュへ変更を隠す」でよけ、「隠した変更を戻す」で戻す
  • 使い終わったブランチは「refブラウザ」で削除する。マージしていないブランチの削除に気を付ける

確認問題

問1 dept-list でだけコミットした dept.html は、main に切り替えるとどうなりますか。

解答を見る

作業フォルダーから無くなります。main の最新のコミットには dept.html が無いためです。dept-list に切り替えると、また現れます。

問2 作業途中の変更があるのに、別のブランチの作業をしなければならなくなりました。変更をコミットせずに切り替えるには、どうしますか。

解答を見る

「スタッシュへ変更を隠す」で作業途中の変更をよけてから、ブランチを切り替えます。元のブランチに戻ったら、「隠した変更を戻す」でよけた変更を戻します。

問3 ブランチを使い始めたら、コミットする前に何を確かめますか。

解答を見る

今いるブランチです。違うブランチにいるままコミットすると、意図しないブランチに変更が記録されます。


前へ

第7章 別の場所から取ってくる(クローンとプル)(TortoiseGit)

次へ

目次へ

【Git入門】目次

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?