忘備録

日々の調べ物をまとめる。アウトプットする。基本自分用。

【git】基本的なコマンド

#================================================================================
# git init
# gitリポジトリの初期化
# 初期化が成功すると、.gitディレクトリが作成される.
# .gitディレクトリ以下を「ワークツリー」と呼ぶ
#================================================================================
Makoto-Air:tutorial makoto$ git init
Initialized empty Git repository in /Users/makoto/Documents/git/tutorial/.git/

#================================================================================
# git status
# リポジトリの状態を確認する.
# 一行目に表示される「On branch 〜」は 〜というブランチにいることを表す.
# 二行目以降に状態が表示される.
#================================================================================
Makoto-Air:tutorial makoto$ git status
On branch master

Initial commit

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

# ファイル作成
Makoto-Air:tutorial makoto$ touch README.md
# ステータス確認
Makoto-Air:tutorial makoto$ git status
On branch master

Initial commit

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

    README.md

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

#================================================================================
# git add
# ステージ領域(※)へのファイルの追加.
#     ※コミット前の一時領域のこと.インデックスとも呼ばれる.
# ステージ領域へ追加することにより管理対象ファイルとなる.
#================================================================================
Makoto-Air:tutorial makoto$ git add README.md 
# ステータス確認
Makoto-Air:tutorial makoto$ git status
On branch master

Initial commit

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

    new file:   README.md

#================================================================================
# git commit
# -m オプションを付けずにコマンドを実行すると以下のメッセージが記述されたエディタが立ち上がる.
#’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
# 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:   README.md
#’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
# 立ち上がったエディタにコメントを記述し終了するとコミットされる.
# 何も記述せずにエディタを終了するとコミットを中止できる.
# 「Changes to be committed:」以下で今回のコミットに含まれるファイルを確認できる.
# 
# -m オプションを付けると簡易メッセージによるコミットができる.
# 例)git commit -m “this is commit message”
#================================================================================
Makoto-Air:tutorial makoto$ git commit
[master (root-commit) 3e23377] First commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md
# ステータス確認
Makoto-Air:tutorial makoto$ git status
On branch master
nothing to commit, working directory clean

#================================================================================
# git log
# コミットログの確認.
# コマンドにディレクトリ名(ファイル名)を指定すると、そのディレクトリ(ファイル)のみのログが確認できる.
# 例)README.mdファイルのログを確認
# git log README.md 
# 
# オプション(抜粋)
# --pretty=short: コメントの一行目だけを表示
# -p       : ファイルの差分を表示
#================================================================================
Makoto-Air:tutorial makoto$ git log
commit 3e233779db57b47dfd775e357b9766a4b44fdf38
Author: Makoto Kitamura <example@hoge.com>
Date:   Wed Nov 18 08:17:11 2015 +0900

    First commit
    
    This is detail message

#================================================================================
# git diff
# ワークツリー・ステージ領域・最新コミット間の差分を確認する.
# 引数に何も渡さないと、ワークツリー <=> ステージ領域
# 引数に「HEAD」というポインタを渡すと、ワークツリー <=> 最新コミット の差分を確認できる.
#================================================================================
# 適当にファイルを編集
Makoto-Air:tutorial makoto$ vi README.md
# ワークツリーとステージ領域の差分を確認
# 「+#Test」が編集(追加)した内容
Makoto-Air:tutorial makoto$ git diff
diff --git a/README.md b/README.md
index e69de29..8ae0569 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+# Test
# 編集したファイルをステージ領域へ追加
Makoto-Air:tutorial makoto$ git add README.md 
# git add後、ワークツリーとステージ領域の差分確認すると何も出力されない(=差分なし)
Makoto-Air:tutorial makoto$ git diff
# ワークツリーと最新コミットの差分を確認
diff --git a/README.md b/README.md
index e69de29..8ae0569 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+# Test
# commit
Makoto-Air:tutorial makoto$ git commit -m "edit README.md"
[master b4728bd] edit README.md
 1 file changed, 1 insertion(+)
# 最新コミットと差分確認
Makoto-Air:tutorial makoto$ git diff HEAD
Makoto-Air:tutorial makoto$ 

#================================================================================
# git branch
# branchを一覧表示
# 「*」がついたbranchが現在のbranch
#================================================================================
$ git branch
* master

#================================================================================
# git checkout
# branchの切替え
# [オプション]
# -b: branchを新規作成
#================================================================================
$ git checkout -b feature-A
Switched to a new branch 'feature-A'
# branchを確認
$ git branch
* feature-A
  master
# 適当に編集
$ vi README.md
# 編集内容確認
$ cat README.md 
# Test
# add & commit
$ git add README.md
$ git commit -m "Add feature-A"
[feature-A bd69952] Add feature-A
 1 file changed, 2 insertions(+)
# master branchに切り替え
$ git checkout master
Switched to branch 'master'
# master branchのREADME.mdに影響がないことを確認
$ cat README.md 
# Test
feature-A
# branch名の代わりに「-」を渡すと、一つ前のbranchに切替える
$ git checkout -
Switched to branch 'feature-A'

#================================================================================
# git merge
# ブランチをマージする
# [オプション]
# -ff: fast-forwardの関係である場合のみ、マージコミットが作られる
# --no-ff: fast-forwardの関係であっても、必ずマージコミットを作る
#================================================================================
$ git merge --no-ff feature-A
Merge made by the 'recursive' strategy.
 README.md | 2 ++
 1 file changed, 2 insertions(+)
# feature-Aブランチの内容が反映されているか確認
$ cat README.md 
# Test

feature-A


#================================================================================
# git log -graph
# 
#================================================================================

#================================================================================
# git remove
# 
# [オプション]
# --cached: 管理対象から削除するだけでファイル消さない
#================================================================================