Gitを使用してローカル環境でライブラリ管理を行う!(基本編)

gitをローカル環境で使用して、ファイルのバージョン管理をする方法をまとめます。

使用環境

  • Ubuntu 18.04.3 Desktop
  • git version 2.17.1

gitのインストール

gitがインストールされていない場合には、aptコマンドで「git」をインストールします。

$ sudo apt install git
$ git --version
git version 2.17.1

gitの初期設定

gitコマンドを使用する際のアイデンティティ情報として、E-mailアドレスと指名を登録します。特定のリポジトリのみに設定する場合は、「--global」は指定しないようにします。

$ git config --global user.email "lab4ict@gmail.com"
$ git config --global user.name "Lab4ict Webmaster"

ディレクトリの作成

リポジトリとして使用するディレクトリを作成します。

$ mkdir -p ~/Documents/git/sample/sample001
$ cd ~/Documents/git/sample/sample001

リポジトリの初期化

リポジトリを初期化します。「.git」ディレクトリが作成されます。

$ git init
$ ls -a
.  ..  .git

リポジトリが空の状態であることを確認します。

$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

リポジトリにステージングの状態としてファイルを登録

リポジトリにファイルを作成し、gitで認識されるか確認します。

$ vi readme.txt
$ git add
On branch master

No commits yet

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

	readme.txt

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

リポジトリにステージングの状態として登録します。この時点では、まだ正式版としてコミットされていません。

$ git status
On branch master

No commits yet

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

	new file:   readme.txt

ステージングの状態を取り消す場合は、「git reset」コマンドを使用します。

$ git reset

リポジトリにステージング状態として登録されたファイルをコミット

リポジトリに登録されたファイルをコミットします。コミットする際には、変更履歴として有用なコメントを指定しましょう。

$ git commit -m "First Version"
[master (root-commit) 0b01d5c] First Version
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt

リポジトリの状態を確認します。

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

ファイル一覧を表示して確認してみます。

$ git ls-files
readme.txt

ファイルの内容を変更してリポジトリにコミット

ファイルの内容を変更した場合は、新規と同じ手順でリポジトリにコミットします。

$ vi readme.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:   readme.txt
 
no changes added to commit (use "git add" and/or "git commit -a")
$ git add readme.txt
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
    modified:   readme.txt
 
$ git commit -m "Second Commit: readme.txt"
[master 2e3d0a3] Second Commit: readme.txt
 1 file changed, 1 insertion(+)

リポジトリへのコミットの履歴を確認

リポジトリへのコミットの履歴を確認します。

$ git log
commit 2e3d0a30cdc1c5d59d00c372b054b8e3bc976b5a (HEAD -> master)
Author: Lab4ict Sitemaster <lab4ict@gmail.com>
Date:   Tue Jan 7 10:09:51 2020 +0900
 
    Second Commit: readme.txt
 
commit 0b01d5c6308e08645189c46427a9dee07d6b6c73
Author: Lab4ict Sitemaster <lab4ict@gmail.com>
Date:   Tue Jan 7 09:51:41 2020 +0900
 
    First Version

ファイルをまとめてリポジトリに登録

「git add .」コマンドを使用すると同じディレクトリ内のファイルをまとめてリポジトリに登録することができます。

$ ls
sample1.txt  sample2.txt
$ git status
On branch master
 
No commits yet
 
Untracked files:
  (use "git add <file>..." to include in what will be committed)
 
    sample1.txt
    sample2.txt
 
nothing added to commit but untracked files present (use "git add" to track)
$ git add .
$ git status
On branch master
 
No commits yet
 
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
 
    new file:   sample1.txt
    new file:   sample2.txt
 
$ git commit -m "First Version"
[master (root-commit) 79dfc72] First Version
 2 files changed, 2 insertions(+)
 create mode 100644 sample1.txt
 create mode 100644 sample2.txt

リポジトリに登録されたファイルのファイル名を変更する!

ファイル名の変更は、「git mv」コマンドで行うことができます。

$ git mv sample1.txt sampleX.txt
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
    renamed:    sample1.txt -> sampleX.txt
 
$ git commit -m "Change Filename sample1.txt -> sampleX.txt"
[master 897e082] Change Filename sample1.txt -> sampleX.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename sample1.txt => sampleX.txt (100%)

リポジトリを以前のコミットの状態に戻す!

リポジトリを以前のコミットの状態に戻す方法です。履歴の情報からコミットのIDを確認して「git reset --hard」コマンドをを使用して戻します。

$ git log
commit 897e0821dc2517cd2c8df5bb19a10243e310b49f (HEAD -> master)
Author: Lab4ict Sitemaster <lab4ict@gmail.com>
Date:   Tue Jan 7 11:42:30 2020 +0900

    Change Filename sample1.txt -> sampleX.txt

commit 79dfc727025122d1712c7def61d4f55efc1fa967
Author: Lab4ict Sitemaster <lab4ict@gmail.com>
Date:   Tue Jan 7 11:39:17 2020 +0900

    First Version
$ git reset --hard 79dfc727025122d1712c7def61d4f55efc1fa967
HEAD is now at 79dfc72 First Version
$ git log
commit 79dfc727025122d1712c7def61d4f55efc1fa967 (HEAD -> master)
Author: Lab4ict Sitemaster <lab4ict@gmail.com>
Date:   Tue Jan 7 11:39:17 2020 +0900

    First Version

特定のファイルやフォルダを登録対象外にする!

「.git]と同じ階層に「.gitingore」というファイルを作成し、特定のファイル名やフォルダ名を記載をして、登録対象外にすることができます。「.gitignore」を作成した場合は、このファイル自体もコミットしておいたほうが有益なケースが多いです。以下は、「sample2.txt」を登録対象外にする例になります。

$ cat .gitignore
sample2.txt

bash環境でのgitコマンドのサブコマンドの補完

bash環境では、「TAB」キーを押すことで、gitコマンドのサブコマンドの補完を行うことができます。積極的に活用しましょう!

おわりに

gitのリポジトリをローカル環境に作成して使用する方法をまとめました。

参考