基本操作①: コミットを使用した変更履歴の記録
リポジトリの作成(初期化)
それでは早速リポジトリを作成してみましょう。
Gitでバージョン管理をするには最初にリポジトリの初期化をしなければなりません。
インストールした端末を使用して以下のコマンドで初期化してみましょう。
まずはmkdirコマンドでディレクトリを作成して、cd コマンドでディレクトリに移動してから git init コマンドを行います。
$ mkdir hello_git $ cd hello_git $ git init
初期化が出来るとディレクトリに .git というディレクトリが作成されます。
この.git ディレクトリの中にローカルリポジトリで管理される情報が格納されていきます。
また、この.gitディレクトリが置いてある場所以下をワークツリーと呼びます。
このワークツリー内でファイルを編集して、リポジトリにその変更を登録していくことで履歴を管理していきます。
リポジトリの状態を確認
git status コマンドを使用することで、現在のリポジトリの状態を確認することが出来ます。
このコマンドでリポジトリの変化を確認しながら作業をしていくことになります。
では早速、git status コマンドを実行してみましょう。
$ git status On branch master No commits yet nothing to commit (create/copy files and use "git add" to track)
実行結果はこのような結果になったと思います。
これは今はmasterというブランチにいること、まだコミットが無いことが表示されています。
コミットとは変更をした内容の記録の事を指します。
なのでコミットが無いということは、まだリポジトリには何も記録されていないということになります。
それではファイルを作成してワークツリーに変更を起こしてみましょう。
ファイルの作成コマンドはtouch <ファイル名>で行います、index.htmlというファイルを作成してみます。
そして再度git status で状態を確認してみましょう。
$ touch index.html $ git status On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) index.html nothing added to commit but untracked files present (use "git add" to track)
そうすると、untracked files にindex.html があることが確認できます。
これはまだ変更の履歴を追っていないファイルがあるということを指しています。
この様にしてgit status コマンドを使用するとリポジトリとワークツリーの状態が分かります。
ステージへの登録
先ほど index.html は変更履歴の対象外になっていました。
これを管理対象に登録するには git add コマンドを使用します。
git add コマンドを実行するとステージという場所に登録することができます。
ステージとはコミットをする手前の一時的な領域の事です。
では、git add でステージに登録してみましょう。
$ git add . $ git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: index.html
ちなみに git add . の . は全部という意味です。
git add . と実行するとそのディレクトリ以下の全てをステージに登録します。
逆に git add index.html と実行すると、index.html だけを指定して登録することが出来ます。
さて、git status で状態を見てみると、changes to be committed に new file: index.html が追加されました。
これで、リポジトリに履歴を登録する準備ができました。
リポジトリに変更履歴を登録
git commit コマンドを使用すると、ステージに登録されているファイルをリポジトリに登録することができます。
こうしてリポジトリに登録をすることで、ワークツリーの内容を元に戻したりすることが出来るようになります。
では git commit を実行してリポジトリに変更を登録してみましょう。
$ git commit -m "add first file" [master (root-commit) 39a93ad] add first file 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 index.html $ git status On branch master nothing to commit, working tree clean
git commit のあとについている -m "add first file" はコミットメッセージです。
メッセージを付けておくことで後々履歴を見た時に何の変更であったかをわかりやすくします。
またこの状態で git status を確認してみましょう。
最新の状態であることが確認できると思います。
コミット履歴を確認
さて、ここまでのコミットの履歴を確認してみましょう。
履歴の確認にはgit log コマンドを使用します。
$ git log commit 39a93adfcfac56c7abcf53b506e100bf406aae53 (HEAD -> master) Author: rod91 Date: Fri Apr 17 22:58:01 2020 +0900 add first file
このように 誰がいつどんなコミットをしたかというのが表示されます。
この際にコミットメッセージが表示されるので、コミット時に後から見てわかりやすいメッセージを登録することがとても大事になります。
また、-p オプションを付けることで差分も表示することが出来ます。
$ git log -p commit 39a93adfcfac56c7abcf53b506e100bf406aae53 (HEAD -> master) Author: rod91 Date: Fri Apr 17 22:58:01 2020 +0900 add first file diff --git a/index.html b/index.html new file mode 100644 index 0000000..e69de29
差分の確認
では、次はファイルに変更を加えてみましょう。
先ほど作成した index.html をエディタで開いて1行追加してみましょう。
この1行追加した変更を git diff コマンドで確認してみます。
$ git diff diff --git a/index.html b/index.html index e69de29..9d28838 100644 --- a/index.html +++ b/index.html @@ -0,0 +1 @@ +<h1>Hello git</h1> \ No newline at end of file
ワークツリーの内容を変更したことで、最新のコミットからの差分が表示されました。
+<h1>Hello git</h1>の行が1行追加されたということが確認できます。
では git add してから差分を確認してみます。
$ git add . $ git diff
そうするとステージに変更を追加したので差分が無くなりました。
今度はこれからするコミットの差分を確認してみます。
その場合は最新のコミットを意味する HEAD を指定します。
そうすると最新のコミットと、これからコミットする内容の差分が表示されます
$ git diff HEAD diff --git a/index.html b/index.html index e69de29..9d28838 100644 --- a/index.html +++ b/index.html @@ -0,0 +1 @@ +<h1>Hello git</h1> \ No newline at end of file
こうして差分をしっかり確認してからコミットします。
そして git log で履歴を確認してみましょう。
$ git commit -m "add hello git" [master 51d05e5] add hello git 1 file changed, 1 insertion(+) $ git log commit 51d05e5e2d44448913ece6cf35c6de60ab1c982c (HEAD -> master) Author: rod91 Date: Sat Apr 18 00:36:03 2020 +0900 add hello git commit 39a93adfcfac56c7abcf53b506e100bf406aae53 Author: rod91 Date: Fri Apr 17 22:58:01 2020 +0900 add first file
履歴に追加されましたね。
これでgitを使用してリポジトリを初期化して、ファイルを追加、そして変更した履歴をリポジトリに登録することが出来ました。