今回はGitについての記事を書いていきたいと思います。
私自身のアウトプットの場となりますので、よろしくお願いいたします。
#Git
Webサイトなどを作る際に、複数人で協力しながら開発していくことがあります。
Gitを使うことでそのような共同開発をスムーズに進めることができます。それではGitの使い方について説明していきます。
##ローカルでGitを使えるようにする
まずは、自分のPC上でGitでのバージョン管理ができる状態にします。
Gitリポジトリを新たに作成するために、次のコマンドで初期化します。
$ git init
git initは、リポジトリを新規作成するコマンドです。
バージョン管理をしていない既存プロジェクトをGitリポジトリに登録するときや、新規リポジトリを作って開発を始めるときなどに使います。今回は新規リポジトリを作成して作業を始めていきたいと思います。
Testという名前の作業用ディレクトリを作成します。
cdコマンドでホームディレクトリへ移動し、さらにデスクトップに移動します。
mkdirコマンドでディレクトリを作成しcdコマンドで移動します。
$ cd
$ cd Desktop
$ mkdir Test
$ cd Test
次にTestディレクトリをGitで管理できるようにします。
$ git init
Initialized empty Git repository in /Users/アカウント名/Desktop/Test/.git/
「git init」の後、上記のような出力されれば初期化成功です。
ls -aコマンドを実行すると.gitディレクトリが存在することが確認できます。
※ -aはlsコマンドのオプションで、.から始まる隠しファイル・ディレクトリを表示するようにします
$ ls -a
##ファイルの変更(追加/変更/削除)
状況を確認するときは、下記コマンドを使います。
$ git status
ファイル・ディレクトリを何も作成していない場合、下記のような表示が出力されます。
$ git status
On branch master
No commits yet nothing to commit (create/copy files and use "git add" to track)
次にtouchコマンドで、test.txtという空のファイルをTestディレクトリに作成します。
$ touch test.txt
$ ls
test.txt
作成されたことが確認できました。Gitで状況を確認してみます。
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.txt
nothing added to commit but untracked files present (use "git add" to track)
test.txtがUntracked filesの箇所に記載されており、新しく追加されたということを意味しています。
##変更履歴を残す準備をする
「test.txtを新規作成した」という変更履歴を残す準備をします。
git add の後にファイル名を指定することでそのファイルをインデックスに追加できます。
※ この時、まだ変更履歴は保存されていませんので注意してください。
$ git add test.txt
git statusコマンドで状況を確認してみましょう。
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test.txt
new file: readme.txtの部分が、インデックスに新しく追加されたファイルであることを意味しています。
##変更履歴を保存する
それでは、変更履歴として保存します。
インデックスに登録された状態を、ローカルリポジトリにコミットします。
$ git commit
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
#
# Initial commit
#
# Changes to be committed:
# new file: test.txt
#
git commitだけ入力すると、上記のようなコミットメッセージを入力する画面になります。
コマンドに続けてメッセージを入力するため、ここでは「:q」を入力して画面を終了してください。
ここで注意なのですが、git commitコマンドを実行した時、下記のようなメッセージが表示される場合があります。
$ git commit
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'username@DESKTOP-1CNDDF8.(none)')
この場合、gitコマンドにgithubに登録したメールアドレスとユーザー名を設定する必要があります。下記コマンドで設定して下さい。
※ 例えばメールアドレスがtesttest@gmail.com、ユーザ名がTestTestの場合は以下のようになります。
$ git config --global user.email testtest@gmail.com
$ git config --global user.name "TestTest"
##コミットメッセージを指定
-mを追加することで、コミットメッセージを一緒に指定することができます。 その後ろの""で囲まれたCommit1が、コミットメッセージです。
$ git commit -m "Commit1"
[master (root-commit) 0437e56] Commit1
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test.txt
これで「test.txtファイルを新規作成した」という変更履歴をコミットできました。
git statusコマンドで状況を確認しましょう。
$ git status
On branch master
nothing to commit, working tree clean
変更されたファイルはすでにコミット済みなので、 「変更履歴が保存されていないファイルはワーキングツリーにはありません」と表示されています。
##差分を確認する
ファイルを変更して前後の差分を確認してみたいと思います。編集前後の変更内容を確認するには git diffコマンドを使用します。
test.txtにcommentと追記して、内容を変更してみましょう。
echoは、メッセージを出力するコマンドです。 >> は、左の結果を右に追記するコマンドです。
$ echo "comment" >> test.txt
ワークツリーとインデックスの差分を表示します。
$ git diff
diff --git a/test.txt b/test.txt
index e69de29..9daeafb 100644
--- a/test.txt
+++ b/test.txt
@@ -0,0 +1 @@
+comment
+commentの部分が、commentという文字を追記したということを意味しています。
では、履歴を保存してみましょう。
先ほどの変更をコミットします。
$ git add test.txt
$ git commit -m "Commit2"
[master 246245c] Commit2
1 file changed, 1 insertion(+)
これで「test.txtにcommentと追記した」という変更履歴をコミットできました。
##変更履歴を確認する
ここまでで、2回の変更履歴を保存しました。その履歴を、実際に確認してみましょう。履歴を確認するにはgit logコマンドを実行することで、これまでに作成したコミットの履歴を確認できます。
$ git log
commit 246245ce4bc0a3ca2e6ca1bc8aa9c256a49333b0 (HEAD -> master)
Author: ユーザ名 <メールアドレス>
Date: Fri Jul 12 12:12:59 2020 +0900
Commit2
commit 0437e563b8e8927dedc20b1f883e1fc5475c70f9
Author: ユーザ名 <メールアドレス>
Date: Fri Jul 12 12:06:19 2020 +0900
Commit1
commitの後に書かれている英数字が、コミットの識別番号になります。
Author:の後には、コミットを作成したユーザーの名前とメールアドレスが表示されます。
Date:の後には、コミットを作成した日時が表示されます。
さらにその下には、コミットするときに入力したコミットメッセージが表示されます。
##履歴を元に前の状態に戻す
では最後に、履歴から過去の状態に戻してみましょう。 「git reset コミット」とすることで、履歴から過去の状態に戻すことが可能になります。「コミット」の部分にコミットの識別番号や位置を指定することで、そのコミットの状態に戻すことができます。
それでは、変更履歴から直前のコミットに状態を戻します。
$ git reset HEAD^
Unstaged changes after reset:
M test.txt
HEAD^は、1つ前のコミットのことを指します。
コミットの識別番号を直接指定することも可能です。
では、履歴を再び表示し、1つ前の状態に戻っているか確認してみましょう。
$ git log
commit 0437e563b8e8927dedc20b1f883e1fc5475c70f9 (HEAD -> master)
Author: ユーザ名 <メールアドレス>
Date: Fri Jul 12 12:06:19 2020 +0900
Commit1
「test.txtというファイルを新規作成した」という履歴のみが表示されています。
1つ前の状態に戻ったため、「test.txtにcommentと追記した」という履歴がなくなったことが確認できればOKです。
しかしながら、git resetコマンドは、リポジトリのコミット状態を戻すコマンドであり、ファイルを元の状態に戻すコマンドではありません。
よってtest.txtにはまだcommentという記述が残っています。注意が必要です。
#まとめ
・ローカルリポジトリでのGitの基本コマンドを理解する。
・変更点を知る
・誰が、なぜ変更したのか記録する
・以前の状態に戻す
今回は上記のような作業を行いました。
最後までご覧いただきまして、ありがとうございます。