概要
- ワーキングディレクトリーの作成は、対象ディレクトリー直下で
git init
を実行 - ファイル・ディレクトリーの作成・変更・削除後のコミットの前に、
git add
でステージングが必要 - ステージングのコマンドは、
git add --all .
- ただし削除の場合は
--all
オプションが必要
- ただし削除の場合は
- ステージングエリアの状態をコミットするには、
git commit -m "コメント"
でコメントを付して実行
Gitの初期設定
バージョン確認
Vagrant-bento/CentOS7の場合、少し古いがGitがインストール済み。
1 2 |
[vagrant@localhost ~]$ git --version git version 1.8.3.1 |
初期設定
git config
コマンドでユーザー名とメールアドレスを設定。この結果カレントディレクトリーに.gitconfig
ファイルが作成され、内容が記述される。
1 2 3 4 5 6 |
[vagrant@localhost ~]$ git config --global user.name taustation [vagrant@localhost ~]$ git config --global user.email "taustation@gmail.com" [vagrant@localhost ~]$ cat .gitconfig [user] name = taustation email = taustation@gmail.com |
必要に応じてGit実行時のカラー設定。
1 2 3 4 5 6 7 |
[vagrant@localhost ~]$ git config --global color.ui auto [vagrant@localhost ~]$ cat .gitconfig [user] name = taustation email = taustation@gmail.com [color] ui = auto |
ワーキングディレクトリー
ワーキングディレクトリーの作成
~/git/test
ディレクトリーを作成し、そこに移動する。このディレクトリーをワーキングディレクトリーとする。
1 |
[vagrant@localhost test]$ mkdir ~/git/test; cd ~/git/test |
ワーキングディレクトリーの初期化
~/git/test
ディレクトリーでgit init
を実行する。
1 2 3 4 5 |
[vagrant@localhost test]$ git init Initialized empty Git repository in /home/vagrant/git/test/.git/ [vagrant@localhost test]$ ls -Al 合計 0 drwxrwxr-x. 7 vagrant vagrant 119 7月 30 07:18 .git |
この結果、リポジトリーのスケルトンとして.git
ディレクトリーが作成される。
1 2 3 4 5 6 7 8 9 10 |
[vagrant@localhost .git]$ ls -Al 合計 12 -rw-rw-r--. 1 vagrant vagrant 23 8月 2 20:44 HEAD drwxrwxr-x. 2 vagrant vagrant 6 8月 2 20:44 branches -rw-rw-r--. 1 vagrant vagrant 92 8月 2 20:44 config -rw-rw-r--. 1 vagrant vagrant 73 8月 2 20:44 description drwxrwxr-x. 2 vagrant vagrant 242 8月 2 20:44 hooks drwxrwxr-x. 2 vagrant vagrant 21 8月 2 20:44 info drwxrwxr-x. 4 vagrant vagrant 30 8月 2 20:44 objects drwxrwxr-x. 4 vagrant vagrant 31 8月 2 20:44 refs |
ステータス確認
ワーキングディレクトリー内でgit status
コマンドを実行してみる。
この段階でステージングエリアにファイルがあれば、それがコミット可能として表示される。しかし現時点ではワーキングディレクトリーの初期化直後なので、ステージングエリアにはコミット可能なファイルはない。ファイルを作成またはコピーして、git add
するよう示唆されている。
また、ブランチはmasterとなっている。
1 2 3 4 5 6 |
[vagrant@localhost test]$ git status # On branch master # # Initial commit # nothing to commit (create/copy files and use "git add" to track) |
ファイルの新規作成とコミット
初期化したリポジトリーに、新たにファイルを作成してコミットする。手順は以下のとおり。
- ワーキングディレクトリーにファイルを新規作成・コピーする
- ファイルをステージング(ステージングエリアに登録)
- ステージングエリアのファイルをコミット
ファイルの新規作成
“初めてのGit”という内容のテキストファイルsample.txt
を作成する。まだステージングされていないことがgit status
で確認できる。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[vagrant@localhost test]$ cat sample.txt 初めてのGit [vagrant@localhost test]$ git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # sample.txt nothing added to commit but untracked files present (use "git add" to track) |
新規ファイルのステージング
作成したファイルをコミットする前に、そのファイルをステージングエリアに登録する必要がある。git add ファイル名
でファイルをステージングエリアに登録する。
ワーキングディレクトリー下の対象ファイルを再帰的に全てステージングするにはgit add .
とする。
git status
で確認すると、新たにsample.txt
が登録されて、変更結果がコミット可能となっている。また、ステージングエリアからファイルを取り除くコマンドも示されている。
1 2 3 4 5 6 7 8 9 10 11 |
[vagrant@localhost test]$ git add sample.txt [vagrant@localhost test]$ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: sample.txt # |
コミット
ステージングエリアのファイルをコミットするには、以下のコマンドでコメントを付けて実行。
git commit -m "コメント"
以下の例では、sample.txt
を"First file"
というコメントを付けてコミットしている。コミット後のステータスは、コミットすべきファイルがない状態になっている。
1 2 3 4 5 6 7 |
[vagrant@localhost test]$ git commit -m "First file" [master (root-commit) 14dad0c] First file 1 file changed, 2 insertions(+) create mode 100644 sample.txt [vagrant@localhost test]$ git status # On branch master nothing to commit, working directory clean |
コミットの結果はログに記録され、git log
で確認できる。
1 2 3 4 5 6 |
[vagrant@localhost test]$ git log commit 14dad0ce29c99ff041a4abae9dd8d8082be7cd5f Author: taustation <taustation@gmail.com> Date: Tue Aug 2 21:04:33 2021 +0900 First file |
ファイル編集とコミット
既作成のファイルを修正した場合のコミットの手順も新規作成と同じで、ステージング→コミットとなる。
ファイルの修正
先に作成したファイルに1行追加している。このままではステージングエリアに登録されていないことがget status
で確認できる。
1 2 3 4 5 6 7 8 9 10 11 12 |
[vagrant@localhost test]$ cat sample.txt 初めてのGit 1行追加 [vagrant@localhost test]$ 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: sample.txt # no changes added to commit (use "git add" and/or "git commit -a") |
ステージング
git add
で変更後のファイルをステージング。
1 2 3 4 5 6 7 8 |
[vagrant@localhost test]$ git add sample.txt [vagrant@localhost test]$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: sample.txt # |
コミット
ファイルを変更した旨のコメントを付けてコミット。
1 2 3 4 5 6 |
[vagrant@localhost test]$ git commit -m "First file modified" [master 241bd35] First file modified 1 file changed, 1 insertion(+), 1 deletion(-) [vagrant@localhost test]$ git status # On branch master nothing to commit, working directory clean |
ログには最初のコミット以降の一連の操作が記録されている。
1 2 3 4 5 6 7 8 9 10 11 12 |
[vagrant@localhost test]$ git log commit 241bd3594b0cb911da9d5f1763763b744b99082d Author: taustation <taustation@gmail.com> Date: Tue Aug 2 21:11:28 2021 +0900 First file modified commit 14dad0ce29c99ff041a4abae9dd8d8082be7cd5f Author: taustation <taustation@gmail.com> Date: Tue Aug 2 21:04:33 2021 +0900 First file |
ファイル削除とコミット
バージョン1.8のGitの場合、ファイルを削除した時のステージング/コミットに注意が必要。
ファイル削除
まずrm
コマンドでファイルを削除する。
1 |
[vagrant@localhost test]$ rm sample.txt |
警告状態での流れ
新規作成・変更の時と同じgit add
コマンドでステージングしてみると、以下のような警告が出る。
1 2 3 4 5 6 7 8 9 10 11 12 |
[vagrant@localhost test]$ git add . warning: You ran 'git add' with neither '-A (--all)' or '--ignore-removal', whose behaviour will change in Git 2.0 with respect to paths you removed. Paths like 'sample.txt' that are removed from your working tree are ignored with this version of Git. * 'git add --ignore-removal <pathspec>', which is the current default, ignores paths you removed from your working tree. * 'git add --all <pathspec>' will let you also record the removals. Run 'git status' to check the paths you removed from your working tree. |
このバージョンでは--ignore-removal
オプションがデフォルトで、ファイルを削除してもその内容は反映されない。
git status
で確認してみると、コミットの対象となる操作はステージングされていないことがわかる。
1 2 3 4 5 6 7 8 9 |
[vagrant@localhost test]$ git status # On branch master # Changes not staged for commit: # (use "git add/rm <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # deleted: sample.txt # no changes added to commit (use "git add" and/or "git commit -a") |
削除も反映/–allオプション
警告時のメッセージに従って、git add
に--all
オプションを付加する。削除済みファイルを対象とするので"."
を指定。
この結果、sample.txt
が削除されたことがステージングされている。
1 2 3 4 5 6 7 8 |
[vagrant@localhost test]$ git add --all . [vagrant@localhost test]$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # deleted: sample.txt # |
この結果をコミットすると、無事sample.txt
が削除される。
1 2 3 4 |
[vagrant@localhost test]$ git commit -m "Committed including deletion" [master f9b6f21] Committed including deletion 1 file changed, 2 deletions(-) delete mode 100644 sample.txt |