Git 入門トップページ


目次

  1. インストール
  2. 環境設定
  3. はじめてのバージョン管理
    1. ここでのストーリー
    2. myReportプロジェクトを作成する
    3. chap1.txtを作成する
    4. コマンドプロンプトの文字コードを変更する
    5. コミットしてみよう
    6. 編集して再度コミットしてみよう
    7. さらに編集しつつ,新しいファイルも追加しよう
    8. コミットログを確認する
    9. 編集して上書き保存してしまったが元に戻したい
    10. 編集してコミットしたが元に戻したい

Git によるバージョン管理入門 (Windows)

はじめてのバージョン管理

ここでは,簡単なバージョン管理を行ってみて,バージョン管理がどのようなものなのかを考えよう.

目次に戻る

ここでのストーリー

ここでは,「myReport」というプロジェクトに,「chap1.txt」と「chap2.txt」という2種類のテキストファイルを作成して,バージョン管理を行ってみる.まず,「chap1.txt」に数行の文章を作成し,Gitにコミットする(つまり,バージョン管理システムに登録する).その後,「chap2.txt」にも数行の文章を作成し,コミットする.さらに,「chap1.txt」や「chap2.txt」を編集してコミットしたり,編集を取り消して以前の状態に戻ったりする.

目次に戻る

myReportプロジェクトを作成する

Git で管理したいフォルダを作成し,そのフォルダに移動して git init を実行すると良い.

例えば,C:\Users\lecture\Documents\ フォルダ に 「myReport」フォルダを作成して,git init を実行してみよう.なお,myReport フォルダはエクスプローラを使って作成しても良い.また git プロジェクトを作成(初期化)すると,「.git」という名称の隠しフォルダが作成される.

C:\Users\lecture>cd Documents ⏎ # Documents フォルダに移動する

C:\Users\lecture\Documents>mkdir myReport ⏎ # myReport フォルダを作成する

C:\Users\lecture\Documents>cd myReport ⏎ # myReport フォルダに移動する

C:\Users\lecture\Documents\myReport>git init ⏎ # git のプロジェクトを作成(初期化)する
Initialized empty Git repository in C:/Users/lecture/Documents/myReport/.git/

C:\Users\lecture\Documents\myReport>dir ⏎ # ファイルの確認
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は E033-4666 です

 C:\Users\lecture\Documents\myReport のディレクトリ

2021/03/22  21:19    <DIR>          .
2021/03/22  21:19    <DIR>          ..
               0 個のファイル                   0 バイト
               2 個のディレクトリ  23,384,137,728 バイトの空き領域

C:\Users\lecture\Documents\myReport>dir /a:h ⏎ # 隠しファイル(フォルダ)の確認
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は E033-4666 です

 C:\Users\lecture\Documents\myReport のディレクトリ

2021/03/22  21:19    <DIR>          .git
               0 個のファイル                   0 バイト
               1 個のディレクトリ  23,384,137,728 バイトの空き領域

C:\Users\lecture\Documents\myReport>

目次に戻る

chap1.txtを作成する

まずは,myReport フォルダに「chap1.txt」ファイルを作成する.任意のテキストエディタ (Visual Studio Code, Atom, 秀丸エディタ,メモ帳など) を使って次のようなテキストファイルを作成する.なお,Windows上の秀丸エディタやメモ帳を利用する場合には「文字コード」に「Unicode (UTF-8)」を指定して保存するようにしてください.

chap1.txt
Gitのお勉強
神戸学院大学
林坂ゼミ

目次に戻る

コマンドプロンプトの文字コードを変更する

まずはコマンドプロンプトを使って,今作成した chap1.txt の中身を閲覧してみよう.このとき,「Unicode (UTF-8)」で保存したファイルはコマンドプロンプトで文字化けしてしまうので,chcp 65001 コマンドによって,コマンドプロンプトの文字コードを変更する必要がある.

C:\Users\lecture\Documents\myReport>dir ⏎ # ファイルの確認
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は E033-4666 です

 C:\Users\lecture\Documents\myReport のディレクトリ

2021/03/22  21:21    <DIR>          .
2021/03/22  21:21    <DIR>          ..
2021/03/22  21:21                51 chap1.txt
               1 個のファイル                  51 バイト
               2 個のディレクトリ  23,387,590,656 バイトの空き領域

C:\Users\lecture\Documents\myReport>type chap1.txt ⏎ # ファイルの中身を閲覧する(文字化け)
Git縺ョ縺雁級蠑キ
逾樊虻蟄ヲ髯「螟ァ蟄ヲ
譫怜揩繧シ繝・

C:\Users\lecture\Documents\myReport>chcp ⏎ # コマンドプロンプトの文字コードを確認
現在のコード ページ: 932

C:\Users\lecture\Documents\myReport>chcp 65001 ⏎ # 文字コードを変更

Active code page: 65001

C:\Users\lecture\Documents\myReport>dir ⏎ # ファイルの確認
 Volume in drive C has no label.
 Volume Serial Number is E033-4666

 Directory of C:\Users\lecture\Documents\myReport

2021/03/22  21:21    <DIR>          .
2021/03/22  21:21    <DIR>          ..
2021/03/22  21:21                51 chap1.txt
               1 File(s)             51 bytes
               2 Dir(s)  23,386,873,856 bytes free

C:\Users\lecture\Documents\myReport>type chap1.txt ⏎ # ファイルの中身を確認
Gitのお勉強
神戸学院大学
林坂ゼミ

C:\Users\lecture\Documents\myReport>

目次に戻る

コミットしてみよう

保存ができれば,実際にコミット(登録)してみよう.Git ではプロジェクトフォルダに保存されたファイルがすべて管理対象に含まれる(.gitignore ファイルを使って指定したファイルを管理対象から除くことも可能).管理対象のファイルで変更されたファイルを確認し,コミットしたいファイルはgit add ファイル名コマンドによって「ステージングエリア」に登録する.その後,git commit -m"メッセージ" によってコミットする.

C:\Users\lecture\Documents\myReport>dir ⏎ # ファイルの確認
 Volume in drive C has no label.
 Volume Serial Number is E033-4666

 Directory of C:\Users\lecture\Documents\myReport

2021/03/22  21:21    <DIR>          .
2021/03/22  21:21    <DIR>          ..
2021/03/22  21:21                51 chap1.txt
               1 File(s)             51 bytes
               2 Dir(s)  23,386,660,864 bytes free

C:\Users\lecture\Documents\myReport>git status ⏎ # トラックされていない(新しいファイル)がある
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        chap1.txt

nothing added to commit but untracked files present (use "git add" to track)

C:\Users\lecture\Documents\myReport>git add chap1.txt ⏎ # ファイルをステージングエリアにアップする

C:\Users\lecture\Documents\myReport>git status ⏎ # コミットの準備ができていることを確認する
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   chap1.txt


C:\Users\lecture\Documents\myReport>git commit -m "initial commit" ⏎ # コミットしてみる
[master (root-commit) b79519c] initial commit
 1 file changed, 3 insertions(+)
 create mode 100644 chap1.txt

C:\Users\lecture\Documents\myReport>git log ⏎ # コミットログを確認する
commit b79519cfc5908b1ed56f11f553c59c06a07bc4cd (HEAD -> master)
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:23:38 2021 +0900

    initial commit

C:\Users\lecture\Documents\myReport>

目次に戻る

編集して再度コミットしてみよう

chap1.txt ファイルに行を追加して,もう一度コミットしてみよう.

chap1.txt の最後に1行追加してみる.

chap1.txt
Gitのお勉強
神戸学院大学
林坂ゼミ
自宅でのリモートワーク

確認してコミットする.

C:\Users\lecture\Documents\myReport>dir ⏎ # ファイルを確認する
 Volume in drive C has no label.
 Volume Serial Number is E033-4666

 Directory of C:\Users\lecture\Documents\myReport

2021/03/22  21:21    <DIR>          .
2021/03/22  21:21    <DIR>          ..
2021/03/22  21:25                86 chap1.txt
               1 File(s)             86 bytes
               2 Dir(s)  23,561,846,784 bytes free

C:\Users\lecture\Documents\myReport>type chap1.txt ⏎ # ファイルの内容を確認
Gitのお勉強
神戸学院大学
林坂ゼミ
自宅でのリモートワーク

C:\Users\lecture\Documents\myReport>git status ⏎ # chap1.txt が修正(modify)されたことが分かる
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   chap1.txt

no changes added to commit (use "git add" and/or "git commit -a")

C:\Users\lecture\Documents\myReport>git diff ⏎ # どこが変わったかの差分を確認する
diff --git a/chap1.txt b/chap1.txt
index 9b3b558..255abed 100644
--- a/chap1.txt
+++ b/chap1.txt
@@ -1,3 +1,4 @@
 Gitのお勉強
 神戸学院大学
 林坂ゼミ
+自宅でのリモートワーク

C:\Users\lecture\Documents\myReport>git add chap1.txt ⏎ # ファイルをステージングエリアにアップ

C:\Users\lecture\Documents\myReport>git commit -m "1行追加" ⏎ # コミット
[master bcda2c8] 1行追加
 1 file changed, 1 insertion(+)

C:\Users\lecture\Documents\myReport>git log ⏎ # ログの確認(2つのコミットがあることが分かる)
commit bcda2c89b7c79a89cfd765446ef6eb5f760fff37 (HEAD -> master)
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:26:21 2021 +0900

    1行追加

commit b79519cfc5908b1ed56f11f553c59c06a07bc4cd
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:23:38 2021 +0900

    initial commit

C:\Users\lecture\Documents\myReport>

目次に戻る

さらに編集しつつ,新しいファイルも追加しよう

chap1.txt をさらに編集しつつ,新しいファイル chap2.txt も追加してみよう.

まず,chap1.txtの2行目に文字を追加,3行目を削除,最後の行を追加してみる.

chap1.txt
Gitのお勉強
神戸学院大学経営学部
自宅でのリモートワーク
ポートアイランドキャンパス

また,chap2.txt を作成し,次のような文章を入力してみる.

chap2.txt
Windows を使って Git を勉強しよう
将来的には Python Django や Laravel のバージョン管理をやりたい

2つのファイルを一気にまとめてコミットする.なお,複数のファイルをステージングエリアにアップするとき,git add ファイル名 を何度も入力するのが大変であるが,git add . で変更されたファイルをすべてアップすることができる.

C:\Users\lecture\Documents\myReport>dir ⏎ # ファイル一覧
 Volume in drive C has no label.
 Volume Serial Number is E033-4666

 Directory of C:\Users\lecture\Documents\myReport

2021/03/22  21:28    <DIR>          .
2021/03/22  21:28    <DIR>          ..
2021/03/22  21:28               125 chap1.txt
2021/03/22  21:29               128 chap2.txt
               2 File(s)            253 bytes
               2 Dir(s)  23,561,842,688 bytes free

C:\Users\lecture\Documents\myReport>type chap1.txt ⏎ # ファイルの内容を閲覧
Gitのお勉強
神戸学院大学経営学部
自宅でのリモートワーク
ポートアイランドキャンパス

C:\Users\lecture\Documents\myReport>type chap2.txt ⏎ # ファイルの内容を閲覧
Windows を使って Git を勉強しよう
将来的には Python Django や Laravel のバージョン管理をやりたい

C:\Users\lecture\Documents\myReport>git status ⏎ # chap1.txtが編集され,新しいファイル(chap2.txt)がある
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   chap1.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        chap2.txt

no changes added to commit (use "git add" and/or "git commit -a")

C:\Users\lecture\Documents\myReport>git add . ⏎ # すべての(編集・新規)ファイルをステージングエリアにアップする

C:\Users\lecture\Documents\myReport>git status ⏎ # コミット前に状態を確認する
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   chap1.txt
        new file:   chap2.txt


C:\Users\lecture\Documents\myReport>git commit -m "chap1修正とchap2追加" ⏎ # コミットする
[master 33449e8] chap1修正とchap2追加
 2 files changed, 4 insertions(+), 2 deletions(-)
 create mode 100644 chap2.txt

C:\Users\lecture\Documents\myReport>

目次に戻る

コミットログを確認する

コミットが蓄積されたので,ログを確認してみよう.

git log ではコミットのid, 作業者名,日時とコミットメッセージの一覧を確認できる.なお,コミットには 33449e8db5ecea84605c11e1ae6843a4ee90c9c4 のようなハッシュ値を用いたidが付与されていることに注意しよう.

C:\Users\lecture\Documents\myReport>git log ⏎
commit 33449e8db5ecea84605c11e1ae6843a4ee90c9c4 (HEAD -> master)
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:30:31 2021 +0900

    chap1修正とchap2追加

commit bcda2c89b7c79a89cfd765446ef6eb5f760fff37
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:26:21 2021 +0900

    1行追加

commit b79519cfc5908b1ed56f11f553c59c06a07bc4cd
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:23:38 2021 +0900

    initial commit

C:\Users\lecture\Documents\myReport>

コミットのidとメッセージだけを表示したい場合は git log --oneline を使えば良い.このとき,コミットIDは先頭から7桁だけが表示されている(コミットIDを指定する場合も7桁程度を指定するだけで良い).

C:\Users\lecture\Documents\myReport>git log --oneline ⏎
33449e8 (HEAD -> master) chap1修正とchap2追加
bcda2c8 1行追加
b79519c initial commit

C:\Users\lecture\Documents\myReport>

コミットの内容を詳細に表示したければ,git log -p のように -p オプションを指定する.このとき,すべての情報が一気に表示できない場合は,上下のカーソルキーやスペースキーでスクロールできる.また終了するには「Q」キーを押すと良い.

C:\Users\lecture\Documents\myReport>git log -p ⏎
commit 33449e8db5ecea84605c11e1ae6843a4ee90c9c4 (HEAD -> master)
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:30:31 2021 +0900

    chap1修正とchap2追加

diff --git a/chap1.txt b/chap1.txt
index 255abed..39ba02f 100644
--- a/chap1.txt
+++ b/chap1.txt
@@ -1,4 +1,4 @@
 Gitのお勉強
-神戸学院大学
-林坂ゼミ
+神戸学院大学経営学部
 自宅でのリモートワーク
+ポートアイランドキャンパス
diff --git a/chap2.txt b/chap2.txt
new file mode 100644
index 0000000..b803cb3
--- /dev/null
+++ b/chap2.txt
@@ -0,0 +1,2 @@
+Windows を使って Git を勉強しよう
+将来的には Python Django や Laravel のバージョン管理をやりたい

commit bcda2c89b7c79a89cfd765446ef6eb5f760fff37
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:26:21 2021 +0900

    1行追加

diff --git a/chap1.txt b/chap1.txt
index 9b3b558..255abed 100644
--- a/chap1.txt
+++ b/chap1.txt
@@ -1,3 +1,4 @@
 Gitのお勉強
 神戸学院大学
 林坂ゼミ
+自宅でのリモートワーク

commit b79519cfc5908b1ed56f11f553c59c06a07bc4cd
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:23:38 2021 +0900

    initial commit

diff --git a/chap1.txt b/chap1.txt
new file mode 100644
index 0000000..9b3b558
--- /dev/null
+++ b/chap1.txt
@@ -0,0 +1,3 @@
+Gitのお勉強
+神戸学院大学
+林坂ゼミ

C:\Users\lecture\Documents\myReport>

最新の2件のコミットを表示する.

C:\Users\lecture\Documents\myReport>git log -2 ⏎
commit 33449e8db5ecea84605c11e1ae6843a4ee90c9c4 (HEAD -> master)
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:30:31 2021 +0900

    chap1修正とchap2追加

commit bcda2c89b7c79a89cfd765446ef6eb5f760fff37
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:26:21 2021 +0900

    1行追加

C:\Users\lecture\Documents\myReport>

最新の1件のコミットを詳細に表示する.

C:\Users\lecture\Documents\myReport>git log -1 -p ⏎
commit 33449e8db5ecea84605c11e1ae6843a4ee90c9c4 (HEAD -> master)
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:30:31 2021 +0900

    chap1修正とchap2追加

diff --git a/chap1.txt b/chap1.txt
index 255abed..39ba02f 100644
--- a/chap1.txt
+++ b/chap1.txt
@@ -1,4 +1,4 @@
 Gitのお勉強
-神戸学院大学
-林坂ゼミ
+神戸学院大学経営学部
 自宅でのリモートワーク
+ポートアイランドキャンパス
diff --git a/chap2.txt b/chap2.txt
new file mode 100644
index 0000000..b803cb3
--- /dev/null
+++ b/chap2.txt
@@ -0,0 +1,2 @@
+Windows を使って Git を勉強しよう
+将来的には Python Django や Laravel のバージョン管理をやりたい

C:\Users\lecture\Documents\myReport>

目次に戻る

編集して上書き保存してしまったが元に戻したい

コミットのあとにいろいろ編集して上書き保存をしたが,やっぱり直前のコミットの状態に戻りたい(プログラムを書き換えたがエラーで動かなくなってしまったのでとりあえず動く状態まで戻したい,など).

Gitのようなバージョン管理システムを使っておれば非常に簡単である.3つのコミットまでできた状態からスタートしよう.まず,chap1.txtの中身を確認する.

C:\Users\lecture\Documents\myReport>git log --oneline ⏎
33449e8 (HEAD -> master) chap1修正とchap2追加
bcda2c8 1行追加
b79519c initial commit

C:\Users\lecture\Documents\myReport>dir ⏎
 Volume in drive C has no label.
 Volume Serial Number is E033-4666

 Directory of C:\Users\lecture\Documents\myReport

2021/03/22  21:28    <DIR>          .
2021/03/22  21:28    <DIR>          ..
2021/03/22  21:34               125 chap1.txt
2021/03/22  21:29               128 chap2.txt
               2 File(s)            253 bytes
               2 Dir(s)  23,560,237,056 bytes free

C:\Users\lecture\Documents\myReport>type chap1.txt ⏎
Gitのお勉強
神戸学院大学経営学部
自宅でのリモートワーク
ポートアイランドキャンパス

C:\Users\lecture\Documents\myReport>

次に,chap1.txt を適当に変更して上書き保存してみよう.保存が終われば,typeコマンドで中身を確認してみる.

C:\Users\lecture\Documents\myReport>type chap1.txt ⏎
Gitのお勉強
神戸学院大学経営学部経営学科
ポートアイランドキャンパス
D号館3階の情報処理実習室

C:\Users\lecture\Documents\myReport>

上のように編集して保存してしまったが,やはり,編集した内容を取り消したい.コミットする前であれば git checkout ファイル名 で戻すことができる.

C:\Users\lecture\Documents\myReport>git status ⏎ # chap1.txt が編集済み
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   chap1.txt

no changes added to commit (use "git add" and/or "git commit -a")

C:\Users\lecture\Documents\myReport>git checkout chap1.txt ⏎ # 編集内容を取り消す
Updated 1 path from the index

C:\Users\lecture\Documents\myReport>git status ⏎ # 元に戻っている
On branch master
nothing to commit, working tree clean

C:\Users\lecture\Documents\myReport>type chap1.txt ⏎ # ファイルの内容も元に戻っている
Gitのお勉強
神戸学院大学経営学部
自宅でのリモートワーク
ポートアイランドキャンパス

C:\Users\lecture\Documents\myReport>

目次に戻る

編集してコミットしたが元に戻したい

編集してコミットしたけれども,直前のコミットや以前のコミットの状態に戻したいということもある.ここでは,2つのファイルをそれぞれ編集,コミットして,元に戻してみよう.

まず,現在の状態を確認する.コミットが3つあることを確認し,それぞれのファイルの内容も確認しておく.

C:\Users\lecture\Documents\myReport>dir ⏎
 Volume in drive C has no label.
 Volume Serial Number is E033-4666

 Directory of C:\Users\lecture\Documents\myReport

2021/03/22  21:35    <DIR>          .
2021/03/22  21:35    <DIR>          ..
2021/03/22  21:35               125 chap1.txt
2021/03/22  21:29               128 chap2.txt
               2 File(s)            253 bytes
               2 Dir(s)  23,584,165,888 bytes free

C:\Users\lecture\Documents\myReport>git log --oneline ⏎
33449e8 (HEAD -> master) chap1修正とchap2追加
bcda2c8 1行追加
b79519c initial commit

C:\Users\lecture\Documents\myReport>type chap1.txt ⏎
Gitのお勉強
神戸学院大学経営学部
自宅でのリモートワーク
ポートアイランドキャンパス

C:\Users\lecture\Documents\myReport>type chap2.txt ⏎
Windows を使って Git を勉強しよう
将来的には Python Django や Laravel のバージョン管理をやりたい

C:\Users\lecture\Documents\myReport>

次に,2つのファイルそれぞれに行を追加する編集をしてみる.

C:\Users\lecture\Documents\myReport>git status ⏎ # 2つのファイルが更新されていることを確認する

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   chap1.txt
        modified:   chap2.txt

no changes added to commit (use "git add" and/or "git commit -a")

C:\Users\lecture\Documents\myReport>git diff ⏎ # 更新内容の差分を確認
diff --git a/chap1.txt b/chap1.txt
index 39ba02f..ebd0d80 100644
--- a/chap1.txt
+++ b/chap1.txt
@@ -1,4 +1,5 @@
 Gitのお勉強
 神戸学院大学経営学部
+間違った編集をしてみる
 自宅でのリモートワーク
 ポートアイランドキャンパス
diff --git a/chap2.txt b/chap2.txt
index b803cb3..0dd9828 100644
--- a/chap2.txt
+++ b/chap2.txt
@@ -1,2 +1,3 @@
 Windows を使って Git を勉強しよう
+バグを埋め込んでみる
 将来的には Python Django や Laravel のバージョン管理をやりたい

C:\Users\lecture\Documents\myReport>

2つのファイルをそれぞれ順番にコミットする.なお,誤ってステージングエリアにアップしてしまった場合は get reset HEAD ファイル名 でステージングエリアから取り除くことができる.

C:\Users\lecture\Documents\myReport>git status ⏎ # 再度状態を確認する
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   chap1.txt
        modified:   chap2.txt

no changes added to commit (use "git add" and/or "git commit -a")

C:\Users\lecture\Documents\myReport>git add . ⏎ # すべての更新ファイルをステージングエリアにアップする

C:\Users\lecture\Documents\myReport>git status ⏎ # 間違ってchap2.txtもステージングエリアにアップしてしまった
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   chap1.txt
        modified:   chap2.txt


C:\Users\lecture\Documents\myReport>git reset HEAD chap2.txt ⏎ # chap2.txt をステージングエリアから取り除く
Unstaged changes after reset:
M       chap2.txt

C:\Users\lecture\Documents\myReport>git status ⏎ # chap1.txt だけがステージングエリアにアップされている
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   chap1.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   chap2.txt


C:\Users\lecture\Documents\myReport>git commit -m "chap1.txtを編集" ⏎ # chap1.txtだけをコミット
[master de49ae4] chap1.txtを編集
 1 file changed, 1 insertion(+)

C:\Users\lecture\Documents\myReport>git add chap2.txt ⏎ # chap2.txt をステージングエリアにアップ

C:\Users\lecture\Documents\myReport>git commit -m "chap2.txtを編集" ⏎ # chap2.txt をコミット
[master 7d55f89] chap2.txtを編集
 1 file changed, 1 insertion(+)

C:\Users\lecture\Documents\myReport>git log --oneline ⏎ # 2つのコミットが追加された
7d55f89 (HEAD -> master) chap2.txtを編集
de49ae4 chap1.txtを編集
33449e8 chap1修正とchap2追加
bcda2c8 1行追加
b79519c initial commit

C:\Users\lecture\Documents\myReport>

2つのコミットを行ったので,内容を確認してみよう.

C:\Users\lecture\Documents\myReport>git log -p -2 ⏎ # コミットの詳細情報を確認
commit 7d55f89d3f6673e641d3827a0d978224e6cf3efc (HEAD -> master)
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:41:00 2021 +0900

    chap2.txtを編集

diff --git a/chap2.txt b/chap2.txt
index b803cb3..0dd9828 100644
--- a/chap2.txt
+++ b/chap2.txt
@@ -1,2 +1,3 @@
 Windows を使って Git を勉強しよう
+バグを埋め込んでみる
 将来的には Python Django や Laravel のバージョン管理をやりたい

commit de49ae4ad56630433e1bbd791a00ee5a83764a9d
Author: Gakuin Hanako <gakuin.hanako@dummy.kobegakuin.ac.jp>
Date:   Mon Mar 22 21:40:36 2021 +0900

    chap1.txtを編集

diff --git a/chap1.txt b/chap1.txt
index 39ba02f..ebd0d80 100644
--- a/chap1.txt
+++ b/chap1.txt
@@ -1,4 +1,5 @@
 Gitのお勉強
 神戸学院大学経営学部
+間違った編集をしてみる
 自宅でのリモートワーク
 ポートアイランドキャンパス

C:\Users\lecture\Documents\myReport>type chap1.txt ⏎ # ファイルの内容を確認
Gitのお勉強
神戸学院大学経営学部
間違った編集をしてみる
自宅でのリモートワーク
ポートアイランドキャンパス

C:\Users\lecture\Documents\myReport>type chap2.txt ⏎ # ファイルの内容を確認
Windows を使って Git を勉強しよう
バグを埋め込んでみる
将来的には Python Django や Laravel のバージョン管理をやりたい

C:\Users\lecture\Documents\myReport>

しかしながら,先程の編集に問題があったことがわかったので,コミット 33449e8 の状態に戻したい.なお,コミットには 33449e8db5ecea84605c11e1ae6843a4ee90c9c4 のようなIDが付けられているが,git reset などでコミットIDを指定する際には,IDを先頭から7桁程度コピーして指定すれば良い.

C:\Users\lecture\Documents\myReport>git log --oneline ⏎ # ログの一覧を表示し,どのコミットまで戻るかを考える
7d55f89 (HEAD -> master) chap2.txtを編集
de49ae4 chap1.txtを編集
33449e8 chap1修正とchap2追加
bcda2c8 1行追加
b79519c initial commit

C:\Users\lecture\Documents\myReport>git reset --hard 33449e8 ⏎ # 特定のコミットまで戻る
HEAD is now at 33449e8 chap1修正とchap2追加

C:\Users\lecture\Documents\myReport>git status ⏎ # 作業ディレクトリはクリーンな状態
On branch master
nothing to commit, working tree clean

C:\Users\lecture\Documents\myReport>git log --oneline ⏎ # コミットログは希望のコミットまで戻っている
33449e8 (HEAD -> master) chap1修正とchap2追加
bcda2c8 1行追加
b79519c initial commit

C:\Users\lecture\Documents\myReport>type chap1.txt ⏎ # ファイルの内容も元に戻っている
Gitのお勉強
神戸学院大学経営学部
自宅でのリモートワーク
ポートアイランドキャンパス

C:\Users\lecture\Documents\myReport>type chap2.txt ⏎ # ファイルの内容も元に戻っている
Windows を使って Git を勉強しよう
将来的には Python Django や Laravel のバージョン管理をやりたい

C:\Users\lecture\Documents\myReport>

Python Django, Laravel などを用いたシステム開発では,Gitのバージョン管理を用いて概ね次の手順を繰り返していくことになる.

  1. ソースファイルを編集する
  2. テストを実施してバグがないことを確認する
  3. Gitでコミットする

これにより,もしも変な編集をしてシステムが起動しなくなっても,動作するバージョンにいつでも戻ることができる.また,いつでも戻れるという安心感があるので,思い切ったコードの変更やリファクタリングを行うこともできるようになる.