Gitでバージョン管理をしてみた

Git for Windowsを使ってみました。Windows10のローカル環境です。

目次

  1. Gitの初期設定
  2. ターミナルを試してみる
  3. リポジトリを作る
  4. コミットしてみる
  5. コミットの取り消し
  6. ブランチを作る
  7. ブランチをマージする

Gitの初期設定

まずgit bashを起動します。 起動したら、コマンドプロンプトに下記を打ち込んで、gitのレポジトリにコミットするときのユーザー名とメールアドレスを設定します。

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

日本語を表示できるようにします。 この設定をしないと、日本語のコミットメッセージが文字化けします。

$ git config --global core.quotepath false

外部エディタの設定をします。 コミットメッセージを書くときに外部エディタを使用できるので、どのテキストエディタを呼び出すかの設定をします。 設定しない場合は vim になります。 下記の例は、Meryです。

$ git config --global core.editor "'C:/Program Files (x86)/Mery/Mery.exe' //cp 650010"

Meryのようにシングルプロセスでマルチドキュメントのテキストエディタですと、Meryを開いている状態でcommitしたときにエラーになったりします。

ターミナルを試してみる

カレントディレクトリを表示してみます。 コマンドはpwdです。

$ pwd
/c/Users/ユーザー名

ディレクトリの区切り文字がスラッシュになってますね。

ディレクトリを移動します。 コマンドはcdです。 例えば、c:Usersユーザー名sourcerepostestに移動してみます。

$ cd source/repos/test

ディレクトリ内のファイルの一覧を表示します。 コマンドはlsです。

$ ls
'新しいテキスト ドキュメント.txt'

はい、エクスプローラで作った空のテキストファイルがあります。

リポジトリを作る

ローカルリポジトリを作ります。 ローカルリポジトリというのは、バージョン管理に使うデータを格納する隠しディレクトリです。 コマンドは git init です。

$ git init
Initialized empty Git repository in C:/Users/ユーザー名/source/repos/test/.git/

$ ls -a
./   ../   .git/  '新しいテキスト ドキュメント.txt'

.gitという隠しディレクトリが作られます。

リポジトリの状態を確認してみます。 コマンドは git status です。

$ git status
On branch master

No commits yet

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

        新しいテキスト ドキュメント.txt

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

master というブランチで、管理外のファイルが1つあると言っています。

コミットしてみる

ファイルを登録する手順としては、まず add で管理対象に追加して、それから commit でレポジトリに登録するという感じです。

まず、ファイルを管理対象に追加します。 コマンドは git add です。

$ git add 新しいテキスト\ ドキュメント.txt
$ git status
On branch master

No commits yet

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

        new file:   新しいテキスト ドキュメント.txt

git add では何もメッセージが表示されなかったので、ステータスも見てみました。

では、ファイルをリポジトリにコミットします。 コマンドは git commit です。

-mオプションを付けると、コミットメッセージをインラインで入力できます。

$ git commit -m 'テストコミット'
[master (root-commit) 739f252] テストコミット
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 新しいテキスト ドキュメント.txt

$ git status
On branch master
nothing to commit, working tree clean

コミットしたので、記録していないファイルは無くなったということです。 ファイルそのものはディレクトリに存在します。

$ ls -a
./   ../   .git/  '新しいテキスト ドキュメント.txt'

このファイルに適当に文字を書き足します。

cat コマンドでファイルの中身を表示します。

$ cat 新しいテキスト ドキュメント.txt
書き足した

ステータスを見てみます。
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   新しいテキスト ドキュメント.txt

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

「変更された」と表示されています。

では、変更したファイルをコミットしてみます。 引数無しでコミットすると、コミットコメント無しでテキストエディタが起動します。 (Meryの場合は、ファイルをMeryで開いているとエラーになります。)

$ git add 新しいテキスト ドキュメント.txt
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   新しいテキスト ドキュメント.txt

$ git commit
[master a0bc2d1]  さらに
 1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working tree clean

「さらに」というのが、Meryで入力したコミットメッセージです。

ログを表示してみます。 コマンドは git log です。

$ git log
commit a0bc2d14363203eadc39e7712adb5354a347ad47 (HEAD -> master)
Author: ユーザー名 <メールアドレス>
Date:   Sun Feb 17 09:26:36 2019 +0900

     さらに

commit 739f252021d2e9463d0fb55ede3c52b578211cd0
Author: ユーザー名 <メールアドレス>
Date:   Sun Feb 17 08:53:05 2019 +0900

    テストコミット

コミットの取り消し

直前のコミットを取り消して、作業ディレクトリのファイルも元に戻します。

$ git reset --hard HEAD^
HEAD is now at 739f252 テストコミット
$ git log
commit 739f252021d2e9463d0fb55ede3c52b578211cd0 (HEAD -> master)
Author: ユーザー名 <メールアドレス>
Date:   Sun Feb 17 08:53:05 2019 +0900

    テストコミット

$ cat "新しいテキスト ドキュメント.txt"

ファイルの中身も元に戻りました。

ブランチを作る

ブランチを作ってみます。 分岐ができるのが git の良いところです。

test1という名前のブランチを作ります。 コマンドは git branch です。

$ git branch test1

$ git status
On branch master
nothing to commit, working tree clean

branchではブランチが作られただけで移動はしてませんね。

ブランチを作っただけではそのブランチに移動できません。 git checkout コマンドで、ブランチを切り替えます。

$ git checkout test1
Switched to branch 'test1'

$ git status
On branch test1
nothing to commit, working tree clean

$ git log
commit 739f252021d2e9463d0fb55ede3c52b578211cd0 (HEAD -> test1, master)
Author: ユーザー名 <メールアドレス>
Date:   Sun Feb 17 08:53:05 2019 +0900

    テストコミット

ファイルを編集して、中身を表示してみます。

$ cat "新しいテキスト ドキュメント.txt"
ブランチを切り替えた

新しいブランチで編集したファイルをコミットします。

$ git add 新しいテキスト ドキュメント.txt

$ git commit -m 'at test1 branch'
[test1 46dcbe0] at test1 branch
 1 file changed, 1 insertion(+)

$ git log
commit 46dcbe0862dfa6a5a07ae3bf72b45017815f1057 (HEAD -> test1)
Author: ユーザー名 <メールアドレス>
Date:   Sun Feb 17 09:48:44 2019 +0900

    at test1 branch

commit 739f252021d2e9463d0fb55ede3c52b578211cd0 (master)
Author: ユーザー名 <メールアドレス>
Date:   Sun Feb 17 08:53:05 2019 +0900

    テストコミット

これで、test1というブランチにファイルの変更が登録されたわけです。

ではmasterブランチに戻ってみます。

$ git checkout master
Switched to branch 'master'

$ git log
commit 739f252021d2e9463d0fb55ede3c52b578211cd0 (HEAD -> master)
Author: ユーザー名 <メールアドレス>
Date:   Sun Feb 17 08:53:05 2019 +0900

    テストコミット

$ cat "新しいテキスト ドキュメント.txt"

test1ブランチで編集する前の状態に戻りました。 ではtest1ブランチに移動してみます。

$ git checkout test1
Switched to branch 'test1'

$ git log
commit 46dcbe0862dfa6a5a07ae3bf72b45017815f1057 (HEAD -> test1)
Author: ユーザー名 <メールアドレス>
Date:   Sun Feb 17 09:48:44 2019 +0900

    at test1 branch

commit 739f252021d2e9463d0fb55ede3c52b578211cd0 (master)
Author: ユーザー名 <メールアドレス>
Date:   Sun Feb 17 08:53:05 2019 +0900

    テストコミット

$ cat "新しいテキスト ドキュメント.txt"
ブランチを切り替えた

はい、test1ブランチの最新の状態になりました。

ブランチをマージする

枝分かれしたままですと、あまり意味がありません。

masterにtest1をマージします。

まずmasterにブランチを切り替えます。

$ git checkout master
Switched to branch 'master'

マージします。 コマンドは git merge です。

$ git merge test1
Updating 739f252..46dcbe0
Fast-forward
 新しいテキスト ドキュメント.txt | 1 +
 1 file changed, 1 insertion(+)

$ git log
commit 46dcbe0862dfa6a5a07ae3bf72b45017815f1057 (HEAD -> master, test1)
Author: ユーザー名 <メールアドレス>
Date:   Sun Feb 17 09:48:44 2019 +0900

    at test1 branch

commit 739f252021d2e9463d0fb55ede3c52b578211cd0
Author: ユーザー名 <メールアドレス>
Date:   Sun Feb 17 08:53:05 2019 +0900

    テストコミット

$ cat "新しいテキスト ドキュメント.txt"
ブランチを切り替えた

test1ブランチで入力した内容がmasterブランチのファイルに反映されました。

公開日

広告